[蓝蓝计算机考研算法训练二期]-day07

79 阅读1分钟

10、统计每个月兔子的总数

有一种兔子,从出生后第3个月起每个月都生一只兔子,小兔子长到第三个月后每个月又生一只兔子。

例子:假设一只兔子第3个月出生,那么它第5个月开始会每个月生一只兔子。

一月的时候有一只兔子,假如兔子都不死,问第n个月的兔子总数为多少?

数据范围:输入满足 1≤n≤31

输入描述:

输入一个int型整数表示第n个月

输出描述:

输出对应的兔子总数

1、思路

兔子的规律为数列1, 1, 2, 3, 5, 8, 13, 21…

观察数列,很容易得出,从 [第三项] 开始,[每一项] 的 值 为 [前面两项] [数值]的[和] 

2、具体实现

using namespace std;
int getSum(int n){ //求每月兔子数
    if(n==1 || n==2) //递归出口
        return 1;
    return getSum(n-1)+getSum(n-2);
}
int main(){
    int n;
    while(cin>>n){
        cout<<getSum(n);
    }
    // cin>>n;
    // cout<<getSum(n);
}