编程 猴子吃桃问题 猴子第一天摘下若干个桃子当机吃了一半还不过瘾又吃了一个 以后每天早
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了编程 猴子吃桃问题 猴子第一天摘下若干个桃子当机吃了一半还不过瘾又吃了一个 以后每天早相关的知识,希望对你有一定的参考价值。
编程 猴子吃桃问题 猴子第一天摘下若干个桃子当机吃了一半还不过瘾又吃了一个 以后每天早上吃前天剩下的一半零一个 第十天早上想吃发现就剩一个 求第一天共摘了几个
先分析问题:用逆向思维来思考它,根据题意“ 以后每天早上吃前天剩下的一半零一个 ”,则我们可以用逆向思维来推导它,即从第十天往前推。已知第十天有一个,根据题意第九天应该就是(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;
参考技术A unsigned int peach_counter; //桃子总数
unsigned int data[10]; //10天每天吃的桃子数量
unsigned int i;
data[0]=1;
for(i=1;i<10;i++)
data[i]=(data[i-1]+1)*2;
if(i==9)
peach_counter= data[9];
追问
可不可以编的能让初学者看懂的
追答这看不懂吗?我觉得好简单了啊
追问我是刚学滴
追答unsigned int peach_counter; //桃子总数
unsigned int data[10]; //10天每天吃的桃子数量 data[10]这是数组,从data[0]--data[9],定义为无符号整型变量,表示10天,data[0],表示最后1天,data[9]是摘桃子的那天。
unsigned int i; //是用来做FOR循环计数器用的,也是定义为无符号整型变量
void main (void) //进入主程序//
data[0]=1; //最后1天剩的桃子数量//
for(i=1;i<10;i++) //进入FOR循环,当i<10,每循环1次加1,从第二天开始,因为第1天只剩一个桃子了//
data[i]=(data[i-1]+1)*2; //每天的桃子数量是前天的数量加1的两倍
if(i==9) //当I等于9也就是第10天的时候,把桃子数量送入桃子总数就行了
peach_counter= data[9];
编程 谢谢
追答编程呐。。。。。那还是算了最烦编程了
参考技术C 若干个猴子吃桃问题:猴子第一天摘下若干个桃子,当即吃了一半,还不瘾,又多吃了一个 第二天早上又将剩下的桃子吃掉一半,又多吃了一个。以后每天早上都吃了前一天剩下
package C; public class Tao { public static void main(String[] args) { int m=1; for (int i = 10; i >1; i--) { m=(m+1)*2; } System.out.println("第一天摘了桃子: "+m+" 个"); } }
以上是关于编程 猴子吃桃问题 猴子第一天摘下若干个桃子当机吃了一半还不过瘾又吃了一个 以后每天早的主要内容,如果未能解决你的问题,请参考以下文章
猴子吃桃问题:猴子第一天摘下若干个桃子,当即吃了一半,还不瘾,又多吃了一个 第二天早上又将剩下的桃子吃掉一半,又多吃了一个。以后每天早上都吃了前一天剩下