A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© hi虚无缥缈 中级黑马   /  2015-5-25 21:43  /  1040 人查看  /  3 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

题目:猴子吃桃问题:猴子第一天摘下若干个桃子,当即吃了一半,还不瘾,又多吃了一个

第二天早上又将剩下的桃子吃掉一半,
又多吃了一个。
以后每天早上都吃了前一天剩

  



的一半零一个。到第
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);
第二天的桃子怎么推算

3 个回复

正序浏览
用递归的思想
回复 使用道具 举报
本帖最后由 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;
}
回复 使用道具 举报
10: 1 ,9:4, 8:10 ,7:22 ---> a*2 + 2
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马