Python 函数递归
函数定义定义中又调用函数自己,这种方式就叫做递归。
递归示例
数学中n的阶乘定义为:n!=n*(n-1)*(n-2)*...*1
使用递归来定义求阶乘函数,代码如下:
def fact(n): if n == 1: # 1的阶乘就是1 return 1 return n * fact(n - 1) # n的阶乘等于 n乘以(n-1) 的阶乘 print(fact(3)) # 6
执行过程解释:

(1)首先执行fact(3),根据函数定义,会执行到 return 3*fact(2) ;由于又调用了 fact(2),程序不会立即 return 返回,而是会开始执行fact(2);
(2)执行fact(2),根据函数定义,会执行到 return 2*fact(1) ;由于又调用了 fact(1),程序不会立即 return 返回,而是会开始执行fact(1);
(3)执行fact(1),根据函数定义,将执行 return 1 ,fact(1)执行完毕,返回1;
(4)fact(2)的 return 2*fact(1),由于fact(1)已经完成了并返回1,那么就是 return 2*1,没有新的调用,fact(2)执行完成,返回2;
(5)fact(3)的 return 3*fact(2),由于fact(2)已经执行了并返回2,那么就是 return 3*2,没有新的调用,fact(3)执行完成,返回最终的结果6。
递归使用注意事项
-
递归必须有出口,也就是有停止条件,并且必须在递归调用过程中向停止条件靠近,否则会出现死循环;也就是说递归到最后要能直接给出结果。
-
浙公网安备 33010602011771号