階乗を計算する
重要性: 4
自然数の 階乗 は 数値に "数値 - 1"
を掛け、次に "数値 - 2"
を掛け、… 1
まで行います。n
の階乗は n!
と表されます。
階乗の定義はこのように書くことができます:
n! = n * (n - 1) * (n - 2) * ...*1
異なる n
の階乗の値は次のようになります:
1! = 1
2! = 2 * 1 = 2
3! = 3 * 2 * 1 = 6
4! = 4 * 3 * 2 * 1 = 24
5! = 5 * 4 * 3 * 2 * 1 = 120
このタスクは再帰呼び出しを使って n!
の計算をする関数 factorial(n)
を書くことです。
alert( factorial(5) ); // 120
P.S. ヒント: n!
は n * (n-1)!
と書くことができます。例えば: 3! = 3*2! = 3*2*1! = 6
定義によると、階乗 n!
は n * (n-1)!
と書くことができます。
つまり、factorial(n)
の結果は n
を factorial(n-1)
の結果で掛けたものとして計算することができます。
function factorial(n) {
return (n != 1) ? n * factorial(n - 1) : 1;
}
alert( factorial(5) ); // 120
再帰のベース値は 1
です。ここではベースを 0
にすることもできます。それほど問題ではありませんが、再帰的なステップが1回増えます:
function factorial(n) {
return n ? n * factorial(n - 1) : 1;
}
alert( factorial(5) ); // 120