計算階乘
重要性:4
自然數的階乘是一個數字乘以「數字減一」
,再乘以「數字減二」
,以此類推,直到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
任務是撰寫一個函式 factorial(n)
,使用遞迴呼叫來計算 n!
。
alert( factorial(5) ); // 120
提示:n!
可以寫成 n * (n-1)!
。例如:3! = 3*2! = 3*2*1! = 6
根據定義,階乘 n!
可以寫成 n * (n-1)!
。
換句話說,factorial(n)
的結果可以計算為 n
乘以 factorial(n-1)
的結果。而 n-1
的呼叫可以遞迴地遞減,直到 1
。
function factorial(n) {
return (n != 1) ? n * factorial(n - 1) : 1;
}
alert( factorial(5) ); // 120
遞迴的基礎是值 1
。我們也可以將 0
作為基礎,這沒有太大關係,但會多一個遞迴步驟
function factorial(n) {
return n ? n * factorial(n - 1) : 1;
}
alert( factorial(5) ); // 120