python递归函数的递推和回溯

递归函数 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”语句作为结束条件的。每递归一次要解决一些事情,否则就失去了递归的意义。


你可能感兴趣的:(Python算法)