题目
如果一对两月大的兔子以后每个月都能生一对小兔子,而一对新生的兔子出生两个月后才可以生小兔子。也就是说,1月份出生,3月份才可以产仔。那么假定一年内没有产生兔子死亡事件,那么一年后共有多少对兔子?
分析
我们先来分析一下兔子产仔问题,逐月来看每月的兔子数量:
第一个月: 1对
第二个月: 1对
第三个月: 2对
第四个月: 3对
第五个月: 5对
…
从上面可以看出,从第三个月开始,每个月的兔子总对数,等于前两个月兔子对数的总和。
显然的斐波那契数列,也是递推法的典型问题。
第n个月兔子总量:
这里,初始第一个兔子
代码
#include <iostream>
#include <cstdlib>
using namespace std;
int Fibonacci(int n)
{
if (n == 1 || n == 2)
return 1;
else
return Fibonacci(n - 1) + Fibonacci(n - 2);
}
int main()
{
cout << "递推法求兔子产仔问题,请输入月份:" << endl;
int n;
while (cin >> n)
{
cout << n << "月后,兔子有:" << Fibonacci(n) << "对。" << endl;
}
system("pause");
return 0;
}