在 Python 中計算階乘

Sahil Bhosale 2023年1月30日
  1. 在 Python 中使用迭代法計算一個數的階乘數
  2. 在 Python 中使用遞迴計算一個數字的階乘
  3. 使用 Python 中的 math.factorial() 函式計算一個數字的階乘
在 Python 中計算階乘

一個數的階乘是所有小於或等於這個數的正整數的乘積。例如,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
作者: Sahil Bhosale
Sahil Bhosale avatar Sahil Bhosale avatar

Sahil is a full-stack developer who loves to build software. He likes to share his knowledge by writing technical articles and helping clients by working with them as freelance software engineer and technical writer on Upwork.

LinkedIn

相關文章 - Python Math