1. 程式人生 > >《劍指offer》------斐波拉契數列

《劍指offer》------斐波拉契數列

ace stream names fibonacci inf ++ ios com 斐波拉契

題目一:求斐波拉契數列的第n項。
寫出一個函數,輸入n,求斐波拉契(Fibonacci)數列的第n項。斐波拉契數列定義如下:

技術分享圖片

C++實現:

//斐波拉契數列
 #include <iostream>
 using namespace std;
 //遞歸實現 
 long long Fibonacci1(unsigned int n){
     if(n<=1){
        return n;
     }
     return Fibonacci1(n-1)+Fibonacci1(n-2);
 }
 //非遞歸實現 
 long long Fibonacci2(unsigned int n){
     if(n<=1){
        return n;
     }
     int f1 = 0,f2 = 1,sum;
     for(int i=2;i<=n;i++){
        sum = f1 + f2;
        f1 = f2;
        f2 = sum;
     }
     return sum;
 } 
 int main()
 {
    //測試數據
     for(int i=0;i<=20;i++){
        cout<<Fibonacci1(i)<<" "; 
     }
     cout<<endl; 
     for(int i=0;i<=20;i++){
        cout<<Fibonacci2(i)<<" "; 
     }
     cout<<endl; 
    return 0;
 }

結果如下:

0 1 1 2 3 5 8 13 21 34 55 89 144 233 377 610 987 1597 2584 4181 6765
0 1 1 2 3 5 8 13 21 34 55 89 144 233 377 610 987 1597 2584 4181 6765
請按任意鍵繼續. . .

《劍指offer》------斐波拉契數列