递归基本原理及概念--上

本文介绍了递归的基本原理,通过一个经典的故事帮助理解递归的概念。递归需要满足边界条件、递归前进和返回段。举例说明了斐波那契数列和猴子吃桃子问题的递归解决方案,并探讨了递归的效率和栈空间占用。同时,展示了PHP中三种不同的递归实现方式:引用参数、全局变量和静态变量,通过实例解析它们的工作原理。
摘要由CSDN通过智能技术生成
递归基本原理及概念
但有这么一句话听的最多:递归就是自己调用自己!引用百科的一个故事去理解:


从前有座山,山里有座庙,庙里有个老和尚,正在给小和尚讲故事呢!故事是什么呢?“从前有座山,山里有座庙,庙里有个老和尚,正在给小和尚讲故事呢!故事是什么呢?‘从前有座山,山里有座庙,庙里有个老和尚,正在给小和尚讲故事呢!故事是什么呢?……’”


这样的故事是不是在做很多重复的事情,像这样的情况下就可以使用递归,递归需要几个条件:


1,递归必须 要有边界条件,也就是递归出口(退出递归)


2,递归前进段和递归返回段,也就是最后得到的值


3,当边界条件(递归出口)不满足时,递归前进;当边界条件(递归出口)满足时,递归返回。


举个递归小例子,比如,


张三去和李四借钱,李四说你等一下,我去找王五借给你,


然后李四去找王五借钱,王五说你等一下,我去找赵六借给你,


最后王五找赵六借钱,赵六借给了王五。(这里就是递归出口)


这里有一个规律就是最先执行的最后返回,比如张三去借钱,最后才会把钱给他。


傻瓜式理解递归,就是忘记递归,假设它的子问题已经解决,从上面的例子说就是假设李四已经有钱。




场景一:
下面说一个场景,斐波纳契数列:1,      1,      2,      3,      5,      8,      13,   21,   34,   55,   89,   144


已知前两项的和,求第三项的和,因为重复用到这个方法,所以用到递归去解:


斐波那契数列的规律是当前项等于前两项的和,得到的公式是f(n)=f(n-1)+f(n-2);这里的n表示第几项,上递归
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值