http://blog.csdn.net/snow_5288/article/details/52561882
問題描述:
/*有一群猴子,去摘了一堆桃子*/
/*商量之后決定每天吃剩余桃子的一半*/
/*當每天大家吃完桃子之后,有個貪心的小猴都會偷偷再吃一個桃子*/
/*按照這樣的方式猴子們每天都快樂的吃著桃子*/
/*直到第十天,當大家再想吃桃子時,發現只剩下一個桃子了*/
問:猴子們一共摘了多少桃子
問題分析:
按照題意:猴子們每天吃桃子的一半,小猴子再偷吃一個,等于每天都吃前一天剩余桃子的一半加一個,知道第十天只剩一個桃子。
如下圖:

迭代法實現:
1.采用for循環實現
- #include<stdio.h>??
- #include?<stdlib.h>??
- int?main()??
- {??
- ????int?peach?=?0;??
- ????int?rest?=?1;??
- ????int?day?=?0;??
- ????for(day?=?9;?day?>?0;?day--)??
- ????{??
- ????????peach?=?(rest?+?1)?*?2;??
- ????????rest?=?peach;??
- ????}??
- ????printf("猴子第一天一共摘了%d個桃子\n",peach);??
- ????system("pause");??
- ????return?0;??
- }??
運行結果:

2.while循環實現:
- #include<stdio.h>??
- #include?<stdlib.h>??
- int?main()??
- {??
- ????int?peach?=?0;??
- ????int?rest?=?1;??
- ????int?day?=?9;??
- ????while(day--)??
- ????{??
- ????????peach?=?(rest?+?1)?*?2;??
- ????????rest?=?peach;??
- ????}??
- ????printf("猴子第一天一共摘了%d個桃子\n",peach);??
- ????system("pause");??
- ????return?0;??
- }??
運行結果:

遞歸實現:
- #include<stdio.h>??
- #include?<stdlib.h>??
- ??
- int?total_peach(int?rest)??
- {??
- ????return?(rest+1)*2;??
- }??
- int?main()??
- {??
- ????int?peach?=?0;??
- ????int?rest?=?1;??
- ????int?day?=?9;??
- ????while(day--)??
- ????{??
- ????????peach?=?total_peach(rest);??
- ????????rest?=?peach;??
- ????}??
- ????printf("猴子第一天一共摘了%d個桃子\n",peach);??
- ????system("pause");??
- ????return?0;??
- }??
運行結果:
