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