递归函数

递归函数是在其定义中调用自身的函数。例如,由 factorial(n) = n*(n-1)*(n-2)*...*3*2*1 定义的数学函数 factorial。可编程为

def factorial(n):
    #n here should be an integer
    if n == 0:
        return 1
    else:
        return n*factorial(n-1)

这里的输出是:

factorial(0)
#out 1
factorial(1)
#out 1
factorial(2)
#out 2
factorial(3)
#out 6

正如所料。请注意,此函数是递归的,因为第二个 return factorial(n-1),函数在其定义中调用自身。

一些递归函数可以使用 lambda 实现,使用 lambda 的阶乘函数将是这样的:

factorial = lambda n: 1 if n == 0 else n*factorial(n-1)

该功能输出与上述相同。