统计每个月兔子的总数
算法知识视频讲解
简单 通过率:37.75% 时间限制:1秒 空间限制:32M
知识点
查找
排序
题目
题解(39)
讨论(451)
排行
warning 校招时部分企业笔试将禁止编程题跳出页面,为提前适应,练习时请使用在线自测,而非本地IDE。
描述
有一只兔子,从出生后第3个月起每个月都生一只兔子,小兔子长到第三个月后每个月又生一只兔子,假如兔子都不死,问每个月的兔子总数为多少?

本题有多组数据。

输入描述:
输入int型表示month

输出描述:
输出兔子总数int型

示例1
输入:
9
复制
输出:
34

#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;
    }
}

/*
* 迭代方法
* 思想:输入月数month,第一个月firstMonthSum,第二个月secondMonthSum,第三个月thirdMonthSum ,
* thirdMonthSum=secondMonthSum+firstMonthSum; secondMonthSum =firstMonthSum;
* firstMonthSum = thirdMonthSum;
*/

int InteratorSum(int month)
{
    int firstMonthSum = 1;
    int secondMonthSum = 0;
    int thirdMonthSum = 0;
    for(int i = 1; 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;
}