用猴子吃桃问题讲讲递归和递推区别

先上概念:递归:从未知出发,不断缩小问题规模,最终利用已知条件找出递归出口,找出最终结果的过程。

                  递推:从已知出发,推出未知,常见有逆推和顺推。

猴子吃桃原型是这样的:猴子摘了一堆桃子,第一天吃了总数一半多一个,第二天吃了剩余桃子的一半多一个.......直到第十天,他发现只剩1个桃子,问他开始摘了几个桃子?

最开始拿到这题是想顺着推出找规律:桃子总数为N,找出每天吃了几个加起来就得到总数。第一天吃了N/2+1个,第二天吃了(N/2-1)/2+1个,第三天吃了(N-(N+2)/4-(N+2)/2)/2+1,然后推导到这一步我就不推了(这是套娃,而且还没思路)

显然看一眼题目,第十天剩1个桃子,可以采用逆推,这时就设第九天有x个桃子,x-(x/2+1)=1,得出x=4,然后再第九天推第八天......最后推第一天桃子总数。(我一想,这法子可行,虽然套娃但有规律)。

上述的方法就是递推中的顺推和逆推,正好符合定义:从已知出发,推出未知。

然后我在想,逆推时候这个1个桃子是第十天剩余的桃子数,逆推结果是每天剩余桃子数,我就想正推思路是不是就有问题,着重点应该在每天剩余桃子数上。如果n代表天数,N代表第一天桃子数

推导出来:f(1)=(f(2)+1)*2

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值