您的位置:

7. Python 中的递归

Python 中的递归

更新:

调用自身的函数是递归函数。当某个问题根据其本身来定义时,使用这种方法。虽然这涉及到迭代,但是使用迭代的方法来解决这样的问题可能是乏味的。递归方法为一个看似复杂的问题提供了一个非常简洁的解决方案。它看起来很迷人,但可能很难理解!

递归最常见的例子是阶乘的计算。数学上阶乘定义为:n!= n * (n-1)!

我们使用阶乘本身来定义阶乘。因此,这是编写递归函数的合适情况。让我们扩展上面的定义,计算阶乘值 5。

5! = 5 X 4!
     5 X4 X 3!
     5 X4 X 3 X 2!
     5 X4 X 3 X  2 X 1!
     5 X4 X 3 X  2 X 1
   = 120 

虽然我们可以使用一个循环来执行这个计算,但是它的递归函数涉及到通过递减数字来连续调用它,直到它达到 1。下面是计算阶乘的递归函数。

Example: Recursive Function

def factorial(n):    
    if n == 1:
        print(n)
        return 1    
    else:
        print (n,'*', end=' ')
        return n * factorial(n-1) 

上面的递归函数可以如下调用。

>>> factorial(5)
5 * 4 * 3 * 2 * 1
120

当以 5 作为参数调用阶乘函数时,会连续调用同一个函数,同时减少 5 的值。在参数达到 1 后,函数开始返回到它们先前的调用。第一次调用的返回值是所有调用的返回值的累积乘积。*