递归函数 recursion:函数直接或间接的调用自身,是python算法中比较核心的概念。递归函数必须具备以下3个特点:1.直接或者间接调用自身 2.具有结束条件,防止递归外溢 3.代码规模逐渐减少
递归的递推:递归每一次都是基于上一次进行下一次的执行。
递归的回溯:当遇到终止条件,则从最后往回一级一级的把值返回来。
def age(n):
if n == 1:
return 18
return age(n –1) + 2
print(age(5))
#age(5) = age(4) +2 第一次进入
#age(4) = age(3) +2 第二次进入
#age(3) = age(2) +2 第三次进入
#age(2) = age(1) +2 第四次进入
#age(1) = 18 第五次进入,此时达到结束的条件,递归终止
这是一个典型的递归递推算法,它的每一次执行都是基于上一次的结果。
def fx(n):
print("递归进入第",n,"层")
if n == 3:
return
fx(n + 1)
print("递归退出第",n,"层")
fx(1)
print("程序结束")
运行结果:
递归进入第 1 层
递归进入第 2 层
递归进入第 3 层
递归退出第 2 层
递归退出第 1 层
程序结束
这是一个典型的递归回溯算法,满足终止条件时,一级一级的把值返回来。
总结:递归必须要有一个明确的结束条件, 否则就变成死循环导致栈溢出,以上两例都是以“if”语句作为结束条件的。每递归一次要解决一些事情,否则就失去了递归的意义。