华为机试HJ37:统计每个月兔子的总数(斐波那契数列)

Posted 翟天保Steven

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了华为机试HJ37:统计每个月兔子的总数(斐波那契数列)相关的知识,希望对你有一定的参考价值。

题目描述:

有一只兔子,从出生后第3个月起每个月都生一只兔子,小兔子长到第三个月后每个月又生一只兔子,假如兔子都不死,问每个月的兔子总数为多少?

本题有多组数据。

输入描述:

输入int型表示month

输出描述:

输出兔子总数int型

示例:

输入:

9

输出:

34

解题思路:

兔子的数量从第一个月开始:1,1,2,3,5,8,13,21,34。。。。斐波那契数列,解决方案递归或者遍历计算。

因为兔子出生开始的第三个月就开始继续生兔子,所以某个月的兔子数等于前一个月的兔子数加上再上个月的兔子数。

同理如果把三换成别的数也要会改变公式。比如变成四个月后开始生兔子,那某月兔子数等于前一个月兔子加上再上上个月的兔子数。

测试代码:

#include <iostream>
#include <algorithm>

using namespace std;

int getNum(int n)
{
    if(n==1||n==2)
        return 1;
    else{
        return getNum(n-1)+getNum(n-2);
    }
}
int main()
{
    int month;
    while(cin>>month)
    {
        cout<<getNum(month)<<endl;
    }
    return 0;
}

以上是关于华为机试HJ37:统计每个月兔子的总数(斐波那契数列)的主要内容,如果未能解决你的问题,请参考以下文章

华为机试题 HJ37统计每个月兔子的总数

组合数学及其应用——斐波那契数

Java与算法之 - 斐波那契数列

C语言-斐波那契数兔子产仔问题

斐波那契数列-兔子问题

1 斐波那契的兔子