猴子吃桃(迭代算法)

猴子与桃纠缠

        传说很久很久以前,一只小猴子听妈妈的话,不远万里,爬山涉水专门跑到王母娘娘的蟠桃园里偷桃子吃,小猴子趁王母娘娘闭关修炼,偷了许多桃子,直到被蟠桃园的守卫发现,才恋恋不舍的逃走,小猴子逃跑的第一天,他看到兜里的美味桃子,贪吃了一半,然后忍不住又吃了一个;逃跑的第二天又吃了一半,再加上一个;后面每天都是这样吃;直到第十天,小猴子到家了,妈妈问:孩子,你摘了几个桃子呀?小猴子说:我摘了好多好多呢!小猴子一掏裤兜发现只有一个桃子了。妈妈说你撒谎呀?看我不打你屁屁!小猴子急了!妈妈一顿教育后,小猴子把所有的经过都一一坦白了。那么,小猴子究竟摘了多少个桃子呢?

解决计算问题

        昂,用编程代码帮我们计算出来吧!

monkey-peach.cpp

#include <iostream>
using namespace std;
int main()
{
        int x, y, n;
        for(x = 1, n = 0; n < 9; y = (x + 1) * 2, x = y, n++);
                cout<<"第一天共摘了 "<<x<<" 个桃子"<<endl;
        return 0;
}

编程代码计算出的结果为 1535 

 

通过while循环迭代计算出小猴子第一天摘的桃子数。

  • 第一次循环:初始时,x=1,n=0,计算 y=(1+1)*2 = 4;然后更新x=4,n增加为1;
  • 第二次循环:此时,x=4,n=1,计算 y=(4+1)*2 = 10;然后更新x=10,n增加为2;
  • 第三次循环:此时,x=10,n=2,计算 y=(10+1)*2 = 22;然后更新x=22,n增加为3;
  • 第四次循环:依次类推,每次循环都按照上诉规则计算新的x值。

这个循环内涵了迭代算法计算小猴子第一天摘的桃子数,从第十天只剩下一个桃子往后推理,倒着推理出第一天小猴子实际摘了1534个桃子。

为了帮助理解倒着推理,设x为小猴子第一天实际摘的桃子总数

第一天剩余的桃:A =(x ÷ 2 - 1)

第二天剩余的桃:B =(A ÷ 2 - 1)

第三天剩余的桃:C =(B ÷ 2 - 1)

...

第九天剩余的桃:I =(H ÷ 2 -1)

第十天剩余的桃:J =(I ÷ 2 -1)==1,那么可以推理出:I == 4,H ==10,依次计算

倒着推理出A ==1534

真相大白

       妈妈听了小猴子的坦白局后,一阵天旋地转,原来呀,真相其实是 妈妈收到了王母娘娘的邀请函,请她去蟠桃园出席做客,品味天下一绝的蟠桃。然而家家有一本难念的经,猴子爸爸在外惹事了,需要猴子妈妈出面处理问题,实在抽不开身,猴子妈妈只好让小猴子拿着邀请函去参加王母娘娘的蟠桃宴。哪知,小猴子路上贪玩,邀请函搞丢了!没有邀请函,进不了南天门,小猴子不甘心吃不到心心念念的蟠桃,偷偷溜进了蟠桃园,这才闹出了乌龙事件!猴子妈妈赶紧带着小猴子向王母娘娘请罪,王母娘娘出了名的铁面无私,只见她冷漠的说:事情的经过我已知晓,无需赘言,念其品行不坏,且无恶意,死罪可免,然不加以惩戒,恐滋长他人效仿之心,故判偿还偷走的所有蟠桃,以儆效尤!哪路神仙可算出此猴共盗走了多少蟠桃?

        众神一筹莫展,太上老君只会炼丹,菩提子手掐半天,千里眼看不明白,顺风耳还没听懂,神算子算到脑阔疼...此时,

编程君走上前来,言:禀王母娘娘,猴儿共盗走蟠桃果实共1534个。紧接着编程君道出缘由

众神听了,无不点头称赞。王母娘娘问:你母女俩可有异议?小猴妈妈拉着小猴子的手连连说道:娘娘赏罚分明。

        只是可怜了小猴子,蟠桃风波即使过去了很久很久,小猴子估计还在惦记编程君的话:我的肚子能吃1534个桃子吗?

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值