编程 猴子吃桃问题 猴子第一天摘下若干个桃子当机吃了一半还不过瘾又吃了一个 以后每天早编程 猴子吃桃问题 猴子第一天摘下若干个桃子当机吃了一半还不过瘾又吃了一个 以后每天早上
来源:学生作业帮助网 编辑:六六作业网 时间:2025/02/09 03:58:21
编程 猴子吃桃问题 猴子第一天摘下若干个桃子当机吃了一半还不过瘾又吃了一个 以后每天早编程 猴子吃桃问题 猴子第一天摘下若干个桃子当机吃了一半还不过瘾又吃了一个 以后每天早上
编程 猴子吃桃问题 猴子第一天摘下若干个桃子当机吃了一半还不过瘾又吃了一个 以后每天早
编程 猴子吃桃问题 猴子第一天摘下若干个桃子当机吃了一半还不过瘾又吃了一个 以后每天早上吃前天剩下的一半零一个 第十天早上想吃发现就剩一个 求第一天共摘了几个
编程 猴子吃桃问题 猴子第一天摘下若干个桃子当机吃了一半还不过瘾又吃了一个 以后每天早编程 猴子吃桃问题 猴子第一天摘下若干个桃子当机吃了一半还不过瘾又吃了一个 以后每天早上
先分析问题:用逆向思维来思考它,根据题意“ 以后每天早上吃前天剩下的一半零一个 ”,则我们可以用逆向思维来推导它,即从第十天往前推.已知第十天有一个,根据题意第九天应该就是(1+1)*2=4个,第八天应该就是(4+1)*2=10, 第七天应该就是(10+1)*2=22, 第六天应该就是(22+1)*2=46,
依此类推,直至第1天应该就是第2天(766+1)*=1534个桃子,即猴子第一天摘了1534个桃子.
为了验证这个推导的正确性,你可以按正常逻辑来把它(即此时由前往后)推导,即由第一天1534个桃子,第二天就是1534/2-1=766个桃子,依此类推,直至第十天,那么猴子此时就会发现只剩一个.
至此,我们由了推导的思想,再来编写的代码,就是小菜一碟的事情啦,实现的它方式无非就是那么两种,一种是简单的for循环,另一种是递归.这里我采用递归,因为解决此类问题往往用递归来思考它,会让问题变得更简单.按照数学思维来说 就是求未知数,则可以根据已知数出发进行求解(那么这里的已知数已经告诉了我们,它说第十天只有一个桃子).
下面是我的递归算法来求解它的方法:
#include <iostream>using namespace std;
int recurrent_monkey(int days) //猴子吃桃递归
{
int peach;
if (days==10) peach=1; // 递归出口条件 (已知条件第10天只有一个桃子)
else peach=(recurrent_monkey(days+1)+1)*2;
return peach;
}
int main()
{
int days=1;
cout<<recurrent_monkey(days)<<endl;
}