递归入门

本文介绍了递归的概念,通过数列的例子说明递归关系和递归出口的重要性,并展示了如何将递归应用于斐波那契数列、前n项求和以及数组求和的问题中,强调了设置递归出口以防止无限递归的关键性。
摘要由CSDN通过智能技术生成

递归就是函数执行后调用自己的方式,为避免一直调用自己,需要设置递归出口。

递归经常和循环绑定在一起,所有的循环都可以转换成递归,递归不可以一定能转换到循环。

 

数列 1 2 3 4 5  6 7 8...      数列每一项的后一项都是由前一项加一得到。

如果把每一项叫做f(n)的话,即f(2) = 2, f(1) = 1....可以得出f(n) = f(n-1) + 1的数学公式。

这里就形成了递归关系,出现函数调用自己来求解自己的行为,f(n)为了求解出自己必须得到f(n-1)的值,f(n-1)为了求解自己必须得到f(n-2)的值,f(n-2)为了求解自己必须...

可以预见的是,倘若不对此递归式施加条件限制,它需要的前一项始终是函数,它得不出自己前一项的具体数字,它会一直调用自己,一直一直,直到永远...

于是,为了避免这种情况,在递归式的基础上还需要递归出口,就是当函数自己调用到自己到一定层数时可以拿到具体数值,使递归停止,然后从最里层拿到的数据一层一层的返回给上一层,最终返回给最初执行的函数,就是我们希望拿到的。   这个过程有点类似于盗梦空间,我们被要求睡觉并且必须在梦里看到老王裸奔的真正场面,否则永远醒不过来。于是我们在梦里梦到老王裸奔,然受梦里做的梦就醒了,把梦里梦到的老王裸奔的事情告诉梦里,然后梦也醒了,梦醒了就告告诉了现实,于是我就清楚老王裸奔的场面了。换句话讲,我们如果在梦里梦

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值