再帰と分割統治
再帰関数
再帰関数とは、関数の中で自分自身を呼び出すような関数で、アルゴリズムを実装するためのプログラミングテクニックの1つである。例えば、整数nの階乗を計算する関数は再帰関数として定義することができる。
factional(n)
if n == 1
return 1
return n * factional(n - 1)
nの階乗は、n! = n x (n -1) x (n - 2)... x 1 = n x (n - 1)!であり、nが1より大きい場合は、より小さい部分問題である「(n - 1)の階乗」を含んでいる。そのため、パラメタnを減らして同じ機能を持つ関数、つまり自分自身を適用し、元の問題の計算に利用することができる。nが1のときは、1を返すというように、再帰関数はそれが必ずどこかで終了するように実装する必要がある。