/*
问题:一对新生兔子,从第三个月开始它们每月都生一对兔子;
按规律可知每月兔子的数量组成如下数列:1,1,2,3,5,8,13,21,……;
称之为Fibonacci数列。
分析:算法可描述为fib1=fib2=1;fib(n)=fib(n-1)+fib(n-2) (n>=3);
作者:RaoBaggiO
日期:2007.10.15
*/
// 下面使用的是递归法
# include <iostream>
using namespace std;
long fib(int);
void main()
{
int x;
cout <<"Please input a number: "<<endl;
cin >>x;
cout <<"第"<<x<<"项是: "<<fib(x)<<endl;
}
long fib(int x)
{
if (x > 2)
return (fib(x-1)+fib(x-2));
else
return 1;
}
// 下面使用的是迭代法
# include <iostream>
# include <iomanip>
# include <math>
using namespace std;
void main()
{
int fib1, fib2, fib, i, n;
fib1=fib2=fib=1;
cout <<"Please input a number: "<<endl;
cin >>n;
for (i=3; i<=n; i++)
{
fib=fib1+fib2;
fib1=fib2;
fib2=fib;
}
cout <<"第"<<n<<"项是: "<<fib<<endl;
}