來自於:http://www.jb51.net/article/38051.htm http://blog.csdn.net/Neil_Wesley/article/details/51484026 題目:猴子吃桃問題:猴子第一天摘下若幹個桃子,當即吃了一半,還不癮,又多吃了一個 第二天早上又將剩下 ...
來自於:http://www.jb51.net/article/38051.htm
http://blog.csdn.net/Neil_Wesley/article/details/51484026
題目:猴子吃桃問題:猴子第一天摘下若幹個桃子,當即吃了一半,還不癮,又多吃了一個
第二天早上又將剩下的桃子吃掉一半,又多吃了一個。以後每天早上都吃了前一天剩下
的一半零一個。到第10天早上想再吃時,見只剩下一個桃子了。求第一天共摘了多少。
思路分析:
採用逆向思維,從後往前推斷,發現其中有相同的地方,即出現遞推公式,可以採用遞歸方法。
令S10=1,容易看出S9=2(S10+1),簡化一下
S9=2S10+2
S8=2S9+2
…..
Sn=2Sn+1+2
下麵我將解決這個問題。(第一種為普通迴圈方式,第二種為遞歸方式)
方法一:while
#include<stdio.h> int main() { int day,x1,x2; day=9; x2=1; while(day>0) { x1=(x2+1)*2; x2=x1; day--; } printf("the total is %d\n",x1); }
方法二:遞歸
#include<stdio.h> int sumPeach(int day); int main() { int sum; sum=sumPeach(1); printf("%d",sum); } int sumPeach(int day) { if(day==10) { return 1; } else return 2*sumPeach(day+1)+2; }