【算法】斐波那契數列

大家都知道斐波那契數列,現在要求輸入一個整數n,請你輸出斐波那契數列的第n項(從0開始,第0項爲0)。

分析:斐波那契數列的標準公式爲:F(1)=1,F(2)=1, F(n)=F(n-1)+F(n-2)(n>=3,n∈N*)

數列如下:
0 1 1 2 3 5 8 13 21 34 55 89…

方法一(遞歸):

public class Solution {
    public int Fibonacci(int n) {
        if(n==0){
            return 0;
        }
        if(n==1){
            return 1;
        }
        return Fibonacci(n-1)+Fibonacci(n-2);
    }
}

時間複雜度:O ( 2^n )
空間複雜度:O ( 1 )


方法二(循環):

public class Solution {
    public int Fibonacci(int n) {
        if(n==0){
            return 0;
        }
        if(n==1){
            return 1;
        }
        int[] arr=new int[n+1];
        arr[0]=0;
        arr[1]=1;
        for(int i=2;i<=n;i++){
            arr[i]=arr[i-1]+arr[i-2];
        }
        return arr[n];
    }
}

時間複雜度: O ( n )
空間複雜度: O( n )


方法三(循環):

public class Solution {
    public int Fibonacci(int n) {
        if(n==0){
            return 0;
        }
        if(n==1){
            return 1;
        }
        int first=0;
        int second=1;
        int ret=0;
        for(int i=2;i<=n;i++){
            ret=second+first;
            first=second;
            second=ret;
        }
        return ret;
    }
}

時間複雜度:O ( n )
空間複雜度:O ( 1 )

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章