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