zoukankan      html  css  js  c++  java
  • 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
    ",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;
    }
  • 相关阅读:
    有一个双重模板化的错误实现
    非类型模板参数
    C++模板
    初始化列表initializer_list
    C++类型转换
    const引用和constexpr
    逆元
    卡特兰数
    最短路问题
    Android打印机效果的闪屏
  • 原文地址:https://www.cnblogs.com/Timenow/p/6899690.html
Copyright © 2011-2022 走看看