猴子吃桃问题 猴子每天吃桃子总数的一半多一个,吃了十天,最后还剩一个桃子,求桃子的总数 用JAVA弄出来

具体每一步的意思最好能说明下 谢谢啊 我新手 刚学这个 不太会

周一帮你看

public class Du {

public static void main(String[] args) {

final int days = 10;//假设10天吃完,这个可以修改任意天数
int peach = calcPeachForMonkey(days);

System.out.println("Total " + peach + " for a monkey in " + days + " days");
}

private static int calcPeachForMonkey(final int days) {
int peach = 0;//初始化桃子总数为0

while(true){
int temp = peach;
int day = 0;

while(peach >= 0){
peach = peach /2 - 1;//验证每天吃一半,再吃掉一个
day++;//每次吃掉一半多一个,天数+1
}

if(day == days){//如果天数刚好和要吃掉桃子的天数相等,就找到桃子总数了
return temp;
}

peach = temp + 2;//每次桃子+2,因为吃掉一半那桃子总数必定为偶数
}
}
}

------------------------------10天测试
Total 1022 for a monkey in 10 days
-----------------7天吃完测试
Total 126 for a monkey in 7 days来自:求助得到的回答
温馨提示:内容为网友见解,仅供参考
第1个回答  2011-07-16
根据题目要求,可以抽象出数学表达式
假设a代表某一天桃子数量,b代表当天吃完桃子剩余桃子的数量
可以产生表达式为b = a - (a/2+1);
现在知道了结果,可以逆向表达式即a = 2*(b+1);
然后就求出结果了
一下是代码
package wangaibo.test;

public class Test {
public static void main(String[] args){
int sum = 1; //定义最后结果
for(int i=1;i<=10;i++){ //循环执行10次,每次代表1天
sum = 2*(sum+1); //计算每天增加桃子的数量
}
System.out.println(sum); //输出结果
}
}

参考资料:www.mkv8.com

第2个回答  2011-07-16
public static int count(int result,int time){
if(time<1)
return result;
else
return count((result+1)*2,time-1);
}
(x/2-1)/2-1=1假设吃桃两天就只剩一个
数学表达式为(x/2-1)/2-1=1
总数为x
吃桃一天:x/2-1
以此类推
每天动作一样
java或者其他语言可以用递归表示
(result+1)*2这个表示当天未吃时的总数
第3个回答  2011-07-16
我日,
第4个回答  2011-07-16
用C可以吗??弄过这个

猴子吃桃问题 猴子每天吃桃子总数的一半多一个,吃了十天,最后还剩一个...
peach = peach \/2 - 1;\/\/验证每天吃一半,再吃掉一个 day++;\/\/每次吃掉一半多一个,天数+1 } if(day == days){\/\/如果天数刚好和要吃掉桃子的天数相等,就找到桃子总数了 return temp;} peach = temp + 2;\/\/每次桃子+2,因为吃掉一半那桃子总数必定为偶数 } } } ---10天测试 Total ...

猴子吃桃问题 猴子每天吃桃子总数的一半多一个,吃了7天,最后还剩一
由题N7\/2-1=1,解得N7=4,即第7天总共有4个桃。同理,第6天,剩了4个桃,解得N6=10 同理,N5=22 N4=46 N3=94 N2=190 N1=382

c语言:猴子吃桃问题,每天吃一半多一个,第13天还剩1个,求共有多少个桃子...
\/*第n天剩num个桃子*\/ } return num;}int main (void) { int num; puts ("每天剩余的桃子数:"); num = getPeachNumber (1); putchar ('\\n'); puts ("==="); putchar ('\\n'); printf("猴子第一天摘了%d个桃子!\\n", num);putchar ('\\n');getc...

猴子吃桃,每天吃一半少一个,吃十天还剩一个,计算有多少个桃子
第8天还剩10个桃子 第7天还剩22个桃子 第6天还剩46个桃子 第5天还剩94个桃子 第4天还剩190个桃子 第3天还剩382个桃子 第2天还剩766个桃子 第1天还剩1534个桃子 1534

...的一半且再多吃一个,到了第10天就只余下一个桃子。
tao[9]=1;\/\/tao[9]代表第10天剩的桃子数 for(i=8;i>=0;i--){ tao[i]=2*(tao[i+1]+1);} printf("共摘了%d个桃子!\\n",tao[0]);} \/\/递归实现 include<stdio.h> int tao(int n){ if(n==10) return 1;return 2*(tao(n+1)+1);} void main(){ int sum=0;sum+...

猴子第一天摘下若干个桃子,当即吃了一半,还不过瘾,又多吃了一个,第二...
多吃了一个,以后每天早上都吃了前一天剩下桃子的一半还多一个,到第10天早上再想吃时就只剩一个桃子了。求第一天共摘了多少个桃子。把猴子吃桃子问题写成一个函数,使其能够求得指定一天开始时的桃子数。178***5703 2018-11-19 | 浏览42 次 保健养生生活常识花鸟鱼虫 |举报 答题抽奖 首次认真答题后 即可...

c语言:猴子吃桃子问题,
1、打开visual C++ 6.0-文件-新建-文件-C++ Source File 2、题目:猴子吃桃:猴子第1天摘下若干个桃子,当即吃掉一半多1个桃子,第2天早上又将剩下的桃子吃掉一半多1个,以后每天都吃掉前天一半多1个,到第10天早上只剩下一个桃子,求第1天猴子到底摘子多少个桃子?3、输入预处理命令和主函数...

...猴子吃桃子问题,第一天吃掉所有桃子的一半多一个,第二天又吃掉剩下...
猴子吃桃问题.猴子第一天摘下若干个桃子,当即吃了一半,还不过瘾,又多吃了一个.第二天早上又将剩下的桃子吃掉一半,又多吃了一个.以后每天早上都吃了前一天剩下的一半零一个.到第十天早上在想吃时,就只剩一个桃子了.求第一天共摘了多少个桃子?public class 猴子吃桃 { static int total(int ...

猴子偷桃问题,怎么错的?猴子每天吃一半多一个,到第十天只有一个桃子
估计是计数错误 a<=9 所以到第十天就没法计数 另外 算法好像有问题 只是好像 我好多年不看这个啦

C语言猴子吃桃问题流程图
猴子分N天吃完了桃子,要想求出第1天的桃子数,就先要求出第2天的桃子数,...因此,有:a1=(a2+1)*2;a2=(a3+1)*2;a3=(a4+1)*2;...a9=(a10+1)*2;a10=1;现在就知道了算法,我们可以用递归来求解:int qiu(int a,int n){ if(n==1) a=1; \/\/第10天就只剩1个了 else a=(...

相似回答