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

简介: 华为机试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;
}


相关文章
|
3月前
lanqiao OJ 246 矩阵计数
lanqiao OJ 246 矩阵计数
16 0
|
8月前
PTA-统计素数并求和
该程序统计并计算1至500之间整数M和N区间内的素数个数和。输入为两正整数M和N,输出为素数个数和它们的和。例如输入10 31,输出7 143。代码通过遍历区间,检查每个数是否能被2到自身-1之间的数整除,若不能则为素数,将其加入列表,最后输出列表长度(素数个数)和列表元素之和(素数和)。
93 0
|
8月前
PTA-第4章-2 统计素数并求和
该代码用于统计并求和给定区间[M, N](1≤M≤N≤500)内的素数。输入包含两整数M和N,输出为素数个数和它们的和。例如,输入10 31,输出7 143。代码通过遍历区间,检查每个数是否能被小于它的数整除来判断是否为素数。
109 0
|
8月前
|
Serverless
每日一题(统计每个月兔子的总数,数列的和)
每日一题(统计每个月兔子的总数,数列的和)
48 0
|
8月前
|
测试技术 C++
【PTA】​L1-003 个位数统计​ (C++)
【PTA】​L1-003 个位数统计​ (C++)
153 0
【PTA】​L1-003 个位数统计​ (C++)
|
容器
华为机试HJ60:查找组成一个偶数最接近的两个素数
华为机试HJ60:查找组成一个偶数最接近的两个素数
|
Java
hdu 2566 统计硬币
hdu 2566 统计硬币
56 0
华为机试HJ91:走方格的方案数
华为机试HJ91:走方格的方案数
141 0
|
容器
华为机试HJ10:字符个数统计
华为机试HJ10:字符个数统计
|
程序员
【牛客网】HJ99 自守数、OR86 返回小于 N 的质数个数
目录 HJ99 自守数 OR86 返回小于 N 的质数个数
87 0