在 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