Fibonacci序列: 1 1 2 3 5 8 13 (一个数等于前两个数之和)
1. Fibonacci序列_递归(简单,用时长)
#include<stdio.h>
enum {N=30};//Fibonacci序列最大个数
int f(int x)
{
return x>2 ? f(x-1)+f(x-2) : 1;
}
int main()
{
int i;
for(i=1;i<=N;i++)
printf("%d\t",f(i));
return 0;
}
2.Fibonacci序列_递归(快速,用时非常短)
#include<stdio.h>
enum {N=30};//Fibonacci序列最大个数
int ff(int a,int b,int n)
{
return n<=1 ? b : ff(a+b,a,n-1);
}
int f(int n)
{
return ff(1,1,n);
}
int main()
{
int i=1;
for(i=1; i<=N; i++)
printf("%d\t",f(i));
return 0;
}
3.Fibonacci序列(数组方法)
#include<stdio.h>
enum {N=30}; //Fibonacci序列最大个数
int main()
{
int i,a[N]={1,1};
for(i=2;i<N;i++)
a[i] = a[i-1] + a[i-2];
for(i=0;i<N;i++)
printf("%d\t",a[i]);
return 0;
}
4.Fibonacci序列(循环交换)
#include<stdio.h>
enum {N=30}; //Fibonacci序列最大个数
int main()
{
int i,t=1,m=0,j=1;
for(i=1;i<=N;i++)
{
printf("%d\t",j);
j=t+m; m=t; t=j;
}
return 0;
}
转载于:https://blog.51cto.com/1666053609/1604675