Fibonacci數列的遞推C語言詳解:Fn=Fn-1+Fn-2

廣海_小瘋瘋丶發表於2018-01-16

Fibonacci數列的遞推C語言詳解:Fn=Fn-1+Fn-2

1. 求Fn除以10007的餘數

#include<stdio.h>    
#define M 10007    

int main()    
{    
    int a1,a2;    
    a1=a2=1;    
    int temp; //temp作為資料交換的中介 
    long n; //因為n>=1 and n<=1000000   
    long i;    
    scanf("%ld",&n);    

    for(i=1;i<n;i++)    
    {     
        //a1 作為f(n);a2為f(n+1) 
        //a1+a2=f(n+2)
        temp=a2;
        a2=(a1+a2)%M;
        a1=temp;
    }   
    printf("%d\n",a1);    
    return 0;    
}     

2. 求第n個數 - 時間複雜度O(n)演算法

#include<stdio.h>    
int main()    
{    
    int a1,a2;    
    a1=a2=1;    
    int temp; //temp作為資料交換的中介 
    long n; //因為n>=1 and n<=1000000   
    long i;    
    scanf("%ld",&n);    

    for(i=1;i<n;i++)    
    {     
        //a1 作為f(n);a2為f(n+1) 
        //a1+a2=f(n+2)
        temp=a2;
        a2=a1+a2;
        a1=temp;
    }   
    printf("%d\n",a1);    
    return 0;    
}   

3. 求第n個數 - 時間複雜度O(nlogn)演算法

#include<stdio.h>  
int Fibo(int n)  
{  
    if(n==1||n==2)  
         return 1;  
    else  
        return Fibo(n-1)+Fibo(n-2);  
}  

int main()  
{  
    int n=0; 
    scanf("%d",&n);       
    printf("%d\n",Fibo(n));       
    return 0;  
}  

相關文章