返回課程

計算階乘

重要性:4

自然數的階乘是一個數字乘以「數字減一」,再乘以「數字減二」,以此類推,直到1n 的階乘表示為 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