含义:递归就是函数自己调用自己。
注意:使用递归需要设置结束条件,若无结束条件,程序会造成内存溢出。
案例:阶乘计算
什么是阶乘?
5的阶乘就是:5 * 4 * 3 * 2 * 1
3的阶乘就是:3 * 2 * 1
代码示例:
# 5的阶乘常规写法 def get_while_num(num): """ 方法用于阶乘计算()常规写法 """ # 定义变量 i = 1 # 存储结果 result = 1 while i <= num: result *= i i += 1 return result print(get_while_num(5)) # 输出结果:120
程序执行逻辑:
5的阶乘就是:5 * 4 * 3 * 2 * 1
第一次循环:num = 5 ,i = 1,1 <= 5,result = 1 * 1 = 1 ;
第二次循环:num = 5 ,i = 2,2 <= 5,result = 1 * 2 = 2 ;
第三次循环:num = 5 ,i = 3,3 <= 5,result = 2 * 3 = 6 ;
第四次循环:num = 5 ,i = 4,4 <= 5,result = 6 * 4 = 24 ;
第五次循环:num = 5 ,i = 5,5 <= 5,result = 24 * 5 = 120 ;
当num = 5 ,i = 6,6 > 5,程序结束
# 注意:写递归的时候,一定要注意递归的出口在哪里 # 3的阶乘递归写法 def getNumber(num): """ 使用递归计算阶乘 """ if num > 1: return num * getNumber(num-1) else: return num print(getNumber(3)) # 输出结果:6
程序执行逻辑:
# 第三种写法 def test3(): return 3 def test2(): return 2 * test3() def test1(): return 1 * test2() print(test1()) # 输出结果:6
程序执行逻辑:
什么时候可以用递归?
当你不确定循环的个数的时候,可以使用递归,只需要你定义什么时候结束就可以了