JavaScript 中計算階乘的函式


本文的任務是使用 JavaScript 獲取數字的階乘。

什麼是階乘?

小於或等於 n 的所有正整數的乘積就是非負整數的階乘。

例如,假設非負整數為 4,則 4 的階乘為 4*3*2*1,等於 24。階乘的符號用 "!" 表示,所以就是 (4!)。

0! 的值為 1,因為 0 不是正整數。

階乘的數學公式

("n!") 這就是數字階乘的表示方式。它是小於或等於 n 的所有正整數的乘積。

以下是階乘的公式。

n! = n*(n-1)*(n-2)*……3*2*1 

使用 for 迴圈

我們可以使用 for 迴圈計算數字的階乘。

演算法

以下是使用 for 迴圈獲取給定數字階乘的步驟。

  • 建立一個值為 1 的變數 (result)

  • 呼叫函式 fact(num)

  • 如果 num 小於 0,則返回 -1。

  • 如果 num = 0,則返回 1。

  • 如果 num > 1,則每次迭代都會將值減少 1 並乘以 result

  • 階乘結果將儲存在 result 變數中。

示例

以下是使用上述 for 迴圈演算法獲取數字階乘的程式。

<!DOCTYPE html> <html> <head> <title>Factorial of a number</title> <button onClick = "func()"> Click to get factorial </button> <p id="para"> </para> <script> function func() { function fact(num) { if (num < 0){ return -1; } else if(num == 0){ return 1; } else { let result = 1; for(var i = num; i > 1; i--){ result *= i; }; return result; } }; const num = 4; document.getElementById("para").innerHTML = fact(num); }; </script> </head> </html>

正如我們在輸出中看到的,它透過迭代輸入數字並在每次迭代中遞減它來使用 for 迴圈計算數字的階乘。

使用遞迴

我們可以透過遞迴獲得數字的階乘。

演算法

以下是透過遞迴實現數字階乘的步驟。

  • num 獲取數字。

  • 呼叫函式 factorial(num)

  • 如果 num 小於 0,則返回 -1。

  • 否則如果 num = 0 返回 1。

  • 否則,返回 (num * factorial(num - 1))

示例

以下是使用上述遞迴演算法獲取數字階乘的示例:

<!DOCTYPE html> <html> <title>Factorial of a number</title> <head> <button onClick = "func()">Factorial</button> <p id="para"> </para> <script> function func(){ function factorial(num) { if (num < 0) { return -1; } else if (num == 0){ return 1; } else { return num * factorial(num - 1); } } let num = 4; document.getElementById("para").innerHTML = factorial(num); }; </script> </head> </html>

執行上述程式後,將顯示一個名為“階乘”的按鈕。如果單擊此按鈕,則計算輸入數字 (4) 的階乘並列印結果。

使用 while 迴圈

我們可以使用 while 迴圈實現數字的階乘。

演算法

以下是使用 while 迴圈計算數字階乘的步驟。

  • 建立變數 res

  • 呼叫函式 fact(num)

  • 如果 num 小於 0,則返回 -1。

  • 如果 num = 0,則返回 1。

  • 如果 num > 1,則每次迭代都會將值減少 1 並乘以 result

  • 階乘結果將儲存在 result 變數中。

示例

以下是使用 while 迴圈獲取數字階乘的示例:

<!DOCTYPE html> <html> <head> <title>Factorial of a number</title> <button onClick = "func()">Click me! </button> <p id = "para"></para> <script> function func(){ function fact(num) { var res = num; if (num === 0){ return 1; } else if (num === 1){ return 1; } else{ while (num > 1) { num--; res *= num; } } return res; }; const num = 4; document.getElementById("para").innerHTML = fact(num); }; </script> </head> </html>

從輸出中我們可以看到,while 迴圈用於透過迭代輸入數字並在每次迭代時遞減它來計算給定數字的階乘。

更新於:2022年9月23日

11K+ 次瀏覽

開啟你的職業生涯

完成課程獲得認證

開始學習
廣告