题目描述:
有一只兔子,从出生后第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; }