很多初学者在看到斐波那契数列实现时可能会一时转不过来,实际来说并不难
经典案例:
第一个月有一对小兔子,第三个月起会生一对小兔子,小兔子长到第三个月也会生一对小兔子,假设兔子都不死,问n月后会有多少只兔子
如果一开始对于问题云里雾里的话,其实不妨列出前面几个月份的情况:
月数: | 1 | 2 | 3 | 4 | 5 | 6 |
数量: | 2 | 2 | 4 | 6 | 10 | 16 |
月增: | 0 | 0 | 2 | 2 | 4 | 6 |
观察表格,明显,3月开始:每月数量 = 前两月数量之和
那么问题就很简单了
C++代码实现如下
#include<iostream>
using namespace std;
void Fibonacci(int month)
{
int Temp1 = 2;
int Temp2 = 4;
//已经给出了第一月和第二月的数量
for(int i =0;i<(month-3);i++)
{
if(Temp1<Temp2)
Temp1+=Temp2;
else
Temp2+=Temp1;
}
//最后一个月是最多兔子的月(1月直接输出Temo1排除特殊情况),直接三元得出即可
if(month==1)
cout << "第" << month << "个月时兔子数量为: " << Temp1 << endl;
else
cout << "第" << month << "个月时兔子数量为: " << (Temp1 > Temp2 ? Temp1 : Temp2) << endl;
}
int main()
{
int month = 1;
cout<<"请问要计算第几个月的兔子数量: ";
cin>>month;
Fibonacci(month);
return 0;
}