C语言递推流程图,有一堆不知数量的桃子,猴子第一天吃掉一半,觉得不过瘾,又多吃了一个;

有一堆不知数量的桃子,猴子第一天吃掉一半,觉得不过瘾,又多吃了一个;第二天造此办理,吃掉一半多一个,天天如此,到第10天早上,猴子发现只剩一个桃子了,问原来这堆桃子有多少?,,,,,求高手解答,求详细流程,和专业讲解
流程图或者NS流程图

欲解答这个题,首先理顺思路。解答这个题,可以用倒推法,亦可用正推法,把数学问题解决了,在编程就不难了。
这个题,用倒推法比较简单;推理如下:
"到第10天早上,猴子发现只剩一个桃子了",说明第九天只有4个桃子(吃掉一半加1,也就是吃掉3个,到第十天就只剩下1个了嘛),所以第八天只有桃子(4+1)乘以2,也就是10个桃子(吃掉一半加1,也就是6个就只剩下4个)…… ……找到规律就可以计算了。
规律:吃掉了一半多一个,那么剩下的就是比一半少一个了。
1.第九天有桃子(1+1)×2=4 个
2.第八天:(4+1)×2=10
3.第七天:(10+1)×2=22
4.第六天:(22+1)×2=46
5.第五天:(46+1)×2=94
6.第四天:(94+1)×2=190
7.第三天:(190+1)×2=382
8.第二天:(382+1)×2=766
9.第一天:(766+1)×2=1534
附程序:
#include<stdio.h>
void main()
{
int i,sum=1;
for (i=1;i<=9;i++)
sum=(sum+1)*2;
printf("桃子总数为:%d\n",sum);

}
温馨提示:内容为网友见解,仅供参考
第1个回答  2011-11-13
这个问题用倒推的方法。从最后剩余的1个开始
第十天:2^1-1=1
第九天:1*2+1=2^2-1
3*2+1=(1*2+1)*2+1=2^2+2+1=2^3-1=7
7*2+1=2^3+2^2+2+1=2^4-1
、、、
S(n)=2^n-1
、、、
当n=10时
S(总计)=2^10-1=1023
#include<stdio.h>
void main()
{
int i,sum=1;
for (i=1;i<=9;i++)
sum=sum*2+1;
printf("桃子总数为:%d\n",sum);

}
第2个回答  2011-11-13
楼上正解,已经没有什么可说的了

C语言递推流程图,有一堆不知数量的桃子,猴子第一天吃掉一半,觉得不过 ...
规律:吃掉了一半多一个,那么剩下的就是比一半少一个了。1.第九天有桃子(1+1)×2=4 个 2.第八天:(4+1)×2=10 3.第七天:(10+1)×2=22 4.第六天:(22+1)×2=46 5.第五天:(46+1)×2=94 6.第四天:(94+1)×2=190 7.第三天:(190+1)×2=382 8.第二...

...了一堆桃子。第一天吃了一半,觉的不过瘾,又多吃了一个,第二天吃了...
include<stdio.h>void main(){ int day, x1, x2; day = 5; x2 = 1; while (day>0) { x1 = (x2 + 1) * 2; x2 = x1; day--; } printf("total=%d\\n", x1);}

C语言猴子吃桃问题递归法
\/*猴子第一天摘下N个桃子,当时就吃了一半,还不过瘾,就又多吃了一个。*\/\/*第二天又将剩下的桃子吃掉一半,又多吃了一个。*\/\/*以后每天都吃前一天剩下的一半零一个。*\/\/*到第10天在想吃的时候就剩一个桃子了*\/\/*问第一天共摘下来多少个桃子?*\/#include <stdio.h>#include <stdlib....

C语言猴子吃桃递归法
main(){ int zuih=1,tians=10;\/\/最后一天的个数,天数 long sum; sum=qiu(1,10); printf("di yi tian you %ld ge.\\n"): } int qiu(int a,int n) { if(n==1) a=1; \/\/第10天就只剩1个了 else a=(a(n-1)+1)*2; \/\/前一天总比后1天多一半加1 } 本回答由电脑网络分类达人 李孝...

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=(...

...桃子 ,当即吃了一半,但还觉得不过瘾 ,就又多吃了一个。第2天早上...
include <stdio.h> main(){ int b,c;scanf("%d",&b);c=1;while(b>1){c=(b+c-1)*2;b=b-1;} if(c>1){printf("The monkey got %d peaches in first day.\\n",c);} else if(c==1){printf("The monkey got %d peach in first day.\\n",c);} } ...

...摘下若干个桃子,当即吃了一半,还不过瘾,又多吃了一个。
这个程序要用逆推的方法,一个循环就够了:include <stdio.h>#include<stdlib.h> main(){ int n,i,s=1;printf("Input days:\\n");scanf("%d",&n);for(i=0;i<n-1;i++)s=2*(s+1);printf("x=%d\\n",s);system("pause");} ...

C语言习题 猴子吃桃问题 猴子第一天摘下若干桃子,吃了一半,不过瘾,又...
第一天吃了一半加一个啊,你不是说的很清楚么。嘿嘿。这个题很简单啊,做十次循环,倒着来,本来一个n=1,一天前是n=n*2+n,两天前是n=n*2+n。。。一直到第十天前。然后再算出吃了多少。

...摘下若干个桃子,当即吃了一半,还不瘾,又多吃了一个,第二天早上又...
1、是一个思维问题,猴子吃桃子会不会把一个桃子分两半来吃,你在程序中使用了实数,而不是整数,应该判断是不是能够被2整除;2、i使用实数,也就是浮点数,而输出的时候使用的是%d的格式,所以,输出为0,可以改变格式为%f,或者将i转变成整数(printf("%d\\n",(int)i);)3、在外循环内部,...

C++程序题,编猴子吃桃问题 猴子第一天摘一干个桃子,当即吃了一半...
printf("最初摘的桃子数量为%d个\\n",all);} int total(int n){ int m;if(n == 1)\/\/逆推,把第10天作为起始第一天,反推10天回去 { m = 1;} else { m = 2 * (total(n-1)+1);\/\/根据第二天个数=前一天个数÷2-1公式得出递归方法 } return m;} VC6.0下已调试运行,没有...

相似回答