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


  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值