在 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