在 Python 中計算階乘

  1. 在 Python 中使用迭代法計算一個數的階乘數
  2. 在 Python 中使用遞迴計算一個數字的階乘
  3. 使用 Python 中的 math.factorial( 函式計算一個數字的階乘

一個數的階乘是所有小於或等於這個數的正整數的乘積。例如,5 的階乘是所有小於等於 5 的數字的乘積,即 5 * 4 * 3 * 2 * 1,等於 120。因此,數字 5 的階乘是 120。

現在讓我們寫一個 Python 函式來計算一個數字的階乘。在 Python 中,我們有兩種方法可以寫一個階乘程式,一種是使用迭代法,另一種是使用遞迴法。

在 Python 中使用迭代法計算一個數的階乘數

使用迭代方法的階乘程式無非是在我們的程式中使用迴圈,如 for 迴圈或 while 迴圈。在 Python 中編寫階乘迭代程式時,我們必須檢查三個條件。

  1. 給定的數字是負數。如果這個數字是負數,那麼我們將簡單地說,我們找不到階乘,因為負數的階乘不存在。
  2. 給定的數字是零。如果數字是零,那麼我們將簡單地列印 1,因為零的階乘是 1
  3. 給定的數字是正數。如果數字是正數,那麼我們只需要找到它的階乘。
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

相關文章 - Python Math

  • Python 中的平方根