HOWTO · Python
在 Python 中計算階乘
在這篇文章中,我們將看到如何通過使用迭代、遞迴和使用 Python 中內建的數學模組來計算一個數字的階乘。
本頁內容
一個數的階乘是所有小於或等於這個數的正整數的乘積。例如,5 的階乘是所有小於等於 5 的數字的乘積,即 5 * 4 * 3 * 2 * 1,等於 120。因此,數字 5 的階乘是 120。
現在讓我們寫一個 Python 函式來計算一個數字的階乘。在 Python 中,我們有兩種方法可以寫一個階乘程式,一種是使用迭代法,另一種是使用遞迴法。
在 Python 中使用迭代法計算一個數的階乘數
使用迭代方法的階乘程式無非是在我們的程式中使用迴圈,如 for 迴圈或 while 迴圈。在 Python 中編寫階乘迭代程式時,我們必須檢查三個條件。
- 給定的數字是負數。如果這個數字是負數,那麼我們將簡單地說,我們找不到階乘,因為負數的階乘不存在。
- 給定的數字是零。如果數字是零,那麼我們將簡單地列印
1,因為零的階乘是1。 - 給定的數字是正數。如果數字是正數,那麼我們只需要找到它的階乘。
def factorial(num):
if num < 0:
print("Factorial of negative num does not exist")
elif num == 0:
return 1
else:
fact = 1
while num > 1:
fact *= num
num -= 1
return fact
num = 5
print("Factorial of", num, "is", factorial(num))
輸出:
Factorial of 5 is 120
在 Python 中使用遞迴計算一個數字的階乘
遞迴無非就是一次又一次地呼叫同一個函式。使用遞迴,我們可以編寫更少的程式碼行,這將比我們使用迭代方法編寫的程式碼更具可讀性。
每當我們呼叫一個遞迴函式時,都會在記憶體中建立一個遞迴棧。這個遞迴棧有一個叫做程式計數器的東西,它可以跟蹤遞迴函式執行完畢後下一條要執行的指令。
def factorial(n):
return 1 if (n == 1 or n == 0) else n * factorial(n - 1)
num = 5
print("Factorial of", num, "is", factorial(num))
輸出:
Factorial of 5 is 120
使用 Python 中的 math.factorial() 函式計算一個數字的階乘
你想用一行字就寫出一個階乘函式嗎?你是否覺得不可能?有一種方法可以用一行程式碼寫一個階乘函式。可以通過 math 模組來實現。在 math 模組中,有一個 factorial 函式來計算一個數字的階乘。
你必須從數學模組中匯入這個函式,在你的程式中呼叫它,並傳遞你想計算的階乘數。請看下面的例子。
from math import factorial
print("Factorial is", factorial(5))
輸出:
Factorial is 120