C++练习之 Fibonacci 数列

来源:互联网 发布:欧文季后赛数据统计 编辑:程序博客网 时间:2024/06/05 19:22

Fibonacci 数列为  1,1,2,3,5,8,13,21……

即第三个数开始,每个数为前两个数之和。

 

①递归法

#include <iostream>
#include <iomanip>
using namespace std;
int f(int n);
int main()
{
 int n,i,k;
 cin>>n;//输出多少个Fibonacci数
 while(n<0)//判断输入的n是否合法,不合法重新输入。
 {
  cout<<"error!"<<endl<<"please input again:";
  cin>>n;
 }
 for(k=0,i=0;i<=n;i++)
 {
  cout<<setw(8)<<f(i);
  k+=1;
  if(k%5==0)//每输出5个则换行。
   cout<<endl;
 }
 cout<<endl;
 return 0;
}
int f(int n)
{
 int s;
 if(n==0||n==1)
  s=1;//给第一、二个赋值
 else
  s=f(n-1)+f(n-2);//递归调用
 return s;
}

 

②数组法:

#include <iostream>
#include <iomanip>
using namespace std;
int main()
{
 int i;
 int f[20]={1,1};//设定了数组f[20]即只输出20个Fibonacci数
 for(i=2;i<20;i++)
  f[i]=f[i-1]+f[i-2];//为第三个至第20个数赋值。
 for(i=0;i<20;i++)
 {
  if(i%5==0)//每输出5个数  换行
   cout<<endl;
  cout<<setw(8)<<f[i];
 }
 cout<<endl;
 return 0;
}