递归函数
我们都知道在函数内部,可以调用其他函数。如果一个函数在内部调用自身本身,这个函数就是递归函数。
简单递归函数
举个例子,我们来计算阶乘n! = 1 x 2 x 3 x...x n,用函数fact(n)表示,可以看出:
fact(n) = n! = 1 x 2 x 3 x...x(n - 1) x n = (n - 1)! x n = fact(n - 1) x n
所以,fact(n)可以表示为n x fact(n - 1),只有n = 1时需要特殊处理。
于是,fact(n)用递归的方式写出来就是:
def fact(n): if n == 1: return 1 return n * fact(n - 1)
上面就是一个递归函数。可以试试:
print(fact(1))print(fact(5))print(fact(100))
运行结果如下:
112093326215443944152681699238856266700490715968264381621468592963895217599993229915608941463976156518286253697920827223758251185210916864000000000000000000000000
如果我们计算fact(5),可以根据函数定义看到计算过程如下:
===> fact(5)===> 5 * fact(4)===> 5 * (4 * fact(3))===> 5 * (4 * (3 * fact(2)))===> 5 * (4 * (3 * (2 * fact(1))))===> 5 * (4 * (3 * (