调用自身的函数是递归函数。当某个问题根据其本身来定义时,使用这种方法。虽然这涉及到迭代,但是使用迭代的方法来解决这样的问题可能是乏味的。递归方法为一个看似复杂的问题提供了一个非常简洁的解决方案。它看起来很迷人,但可能很难理解!
递归最常见的例子是阶乘的计算。数学上阶乘定义为: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 后,函数开始返回到它们先前的调用。第一次调用的返回值是所有调用的返回值的累积乘积。*