递归实现,也是最常用的
#include<iostream>
using namespace std;
int F(int n)
{
if (n < 0)
return 0;
if (n == 0 || n == 1)
return n;
else
return F(n - 1) + F(n - 2);
}
int main()
{
while (true) {
cout << "Input:(开始数从0开始)";
int n = 0;
cin >> n;
cout << "F("<<n<<")="<<F(n) << endl;
}
return 0;
}
数组实现
#include <stdio.h>
int main( )
{
int i,n;
printf("input:");
scanf("%d",&n);
int f[20]= {1,1};//最大20
for(i=2; i<n; i++)
{
f[i]=f[i-2]+f[i-1];
}
for(i=0; i<n; i++)
{
printf("%8d\n", f[i]);
}
return 0;
}
循环实现
#include <stdio.h>
#include <stdlib.h>
int main()
{
int i = 0;
int limit ;
printf("input:");
scanf("%d",&limit);
int pre1 = 1;
int pre2 = 1;
int res;
for (i; i < limit; i++)
{
if (i == 0 || i == 1)
{
// 前两个fibonacci数是1
printf("1 ");
}
else
{
res = pre1 + pre2;
printf("%d ", res);
pre1 = pre2;
pre2 = res;
}
}
return 0;
}