题解 | #统计每个月兔子的总数#

统计每个月兔子的总数

http://www.nowcoder.com/practice/1221ec77125d4370833fd3ad5ba72395


#include <iostream>

using namespace std;

/*
* 斐波那契数列公式(递归):1 1 2 3 5 8 13 ,f(n) = f(n-1) + f(n-2), n > 2
* 思路: 当month<3,则输出;当month>=3,则f(n) = f(n-1) + f(n-2)
*/

int Fibonacci(int month)
{
    if(month < 3) {
        return 1;
    } else {
        int sum = Fibonacci(month-1) + Fibonacci(month-2);
        return sum;
    }
}

/*
* 迭代方法
* 思想:前三个月都是一个兔子,到第四个月才2个兔子.
* 输入月数month,第一个月firstMonthSum,第二个月secondMonthSum,第三个月thirdMonthSum ,
* thirdMonthSum=secondMonthSum+firstMonthSum; secondMonthSum =firstMonthSum;
* firstMonthSum = thirdMonthSum;
*/

int InteratorSum(int month)
{
    int firstMonthSum = 1;
    int secondMonthSum = 0;
    int thirdMonthSum = 0;
    // 前2个月都是一个兔子,到第3个月才2个兔子,每个3个月生一个兔子
    for(int i = 2; i <= month; i++) {
        thirdMonthSum = secondMonthSum + firstMonthSum;
        secondMonthSum = firstMonthSum;
        firstMonthSum = thirdMonthSum;
    }
    return thirdMonthSum;
}

int main()
{
    int month = 0;
    while(cin>>month) {
        // cout<< Fibonacci(month) <<endl;
        cout<< InteratorSum(month) <<endl;
    }
    return 0;
}
全部评论

相关推荐

点赞 收藏 评论
分享
牛客网
牛客企业服务