详解python中的阶乘函数

  • Post category:Python

阶乘指的是从1到给定数之间所有整数的乘积,通常用符号“!”表示。例如,5! = 5 × 4 × 3 × 2 × 1 = 120。

在Python中,可以使用递归和迭代两种方式实现阶乘函数。

递归方式求阶乘

递归函数是一种在函数定义中调用函数自身的方法。通过递归,可以把复杂任务分解成简单的子任务,并将它们逐步解决。

def factorial(n):
    '''
    递归方式求阶乘
    '''
    if n == 0 or n == 1:
        return 1
    else:
        return n * factorial(n-1)

以上代码中,我们先判断了n的大小,如果n为0或1,则直接返回1;否则,将n乘以n-1的阶乘。在函数中调用自身,计算完类似于factorial(n - 1)的表达式后终止。

迭代方式求阶乘

迭代实现阶乘的方法比递归更为简单并且效率更高。它是通过一个循环把复杂任务完成。

常见的方法是利用for循环或者while循环计算阶乘:

def factorial_iterative(n):
    '''
    迭代方式求阶乘
    '''
    res = 1
    for i in range(1, n+1):
        res *= i
    return res

以上代码中,我们使用了for循环,将res初始化为1,然后遍历从1到n的所有数字,将其乘以res的值,最终得到阶乘的结果。

另外一个实现阶乘的迭代方式是利用while循环:

def factorial_iterative2(n):
    '''
    迭代方式求阶乘(while实现)
    '''
    res = 1
    while n > 1:
        res *= n
        n -= 1
    return res

以上代码中,我们初始化了res为1,并使用while循环,只要n大于1,就将其乘以res的值,并将n减去1,最终得到阶乘的结果。

总结:以上是Python中实现阶乘函数的两种方法,分别是递归方式和迭代方式,开发者可以根据实际情况选择合适的方法来实现自己的阶乘函数。