黑马程序员技术交流社区
标题:
猴子吃桃问题
[打印本页]
作者:
hi虚无缥缈
时间:
2015-5-25 21:43
标题:
猴子吃桃问题
题目:猴子吃桃问题:猴子第一天摘下若干个桃子,当即吃了一半,还不瘾,又多吃了一个
第二天早上又将剩下的桃子吃掉一半,
又多吃了一个。
以后每天早上都吃了前一天剩
下
的一半零一个。到第
10
天早上想再吃时,见只剩下一个桃子了。求第一天共摘了多
少。
1.
程序分析:采取逆向思维的方法,从后往前推断。
2.
程序源代码:
main()
{
int day,x1,x2;
day=9;
x2=1;
while(day>0)
{x1=(x2+1)*2;/*
第一天的桃子数是第
2
天桃子数加
1
后的
2
倍
*/
x2=x1;
day--;
}
printf("the total is %d\n",x1);
第二天的桃子怎么推算
作者:
XiaoBaoMi
时间:
2015-5-26 15:00
10: 1 ,9:4, 8:10 ,7:22 ---> a*2 + 2
作者:
yuang4074
时间:
2015-5-26 15:54
本帖最后由 yuang4074 于 2015-5-26 15:55 编辑
#include<stdio.h>
int eat(int day)
{
int x1=0,x2=1;//x2是第9天吃剩的桃子个数也就是第10天见到的桃子个数
while(day>0)//反推到第一天
{
printf("第%d天吃过后剩:%d\t",day,x2);
printf("第%d天还有:%d\t",day+1,x2);
x1=(x2+1)*2; //通过当天剩余的桃子求出前天的桃子
x2=x1;//用得出的桃子作为前天的剩余的桃子
printf("第%d天没吃时有:%d\n",day,x1);
day--;
}
printf("\n由自底向上的吃桃记录↑知:这只猴子共摘了%d只桃子。\n\n",x1);
}
int main(int argc, char *argv[]){
eat(9);//第10见到的桃子就是第9天吃剩的桃子
return 0;
}
作者:
天是蓝色的
时间:
2015-5-26 21:06
用递归的思想
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2