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;
}