统计每个月兔子的总数
算法知识视频讲解
简单 通过率: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;
} 
京公网安备 11010502036488号