C語言程序設計例子(3):猴子吃桃問題


來自於: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;
}

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM