劍指offer 9 斐波那契數列

2021-09-24 14:39:49 字數 779 閱讀 5837

求斐波那契數列的第 n 項,n <= 39。

思路解析:兩種方式

1.利用公式求取每乙個f(n)的值,並利用乙個n+1的陣列來儲存每乙個f(n)的值,此方法空間複雜度為o(n)

2.利用兩個變數儲存f(n-1)和f(n-2)的值,利用公式f(n)=f(n-1)+f(n-2),並不斷更新f(n-1)與f(n-2)的值,此方法空間複雜度為o(1)

/// /// 對n的值進行求取,並存放到陣列中,利用公式發f(n)=f(n-1)+f(n-2),空間複雜度為o(n)

///

///

///

public int fibonacci1(int n)

int fib=new int[n+1];

fib[0] = 0;

fib[1] = 1;

for (int i = 2; i <=n; i++)

return fib[n];

}

/// /// 此方法利用兩變數儲存n-1和n-2項的值,通過n-1與n-2的值即可求出n的值,空間複雜度為o(1)

///

///

///

public int fibonacci2(int n)

int pre = 0, cur = 1;

int fib = 0;

for (int i = 2; i <=n; i++)

return fib;

}

劍指Offer9斐波那契數列

寫乙個函式,輸入n,求斐波那契數列的第n項。f 0 0 f 1 1 f n f n 1 f n 2 方法1 遞迴實現 long long fibonacci unsigned int n 方法2 迴圈實現,並且不用陣列來記錄每乙個值,只要記錄最後兩個變數就可以 long long fibonacci...

劍指offer 9 斐波那契數列

大家都知道斐波那契數列,現在要求輸入乙個整數n,請你輸出斐波那契數列的第n項 從0開始,第0項為0 第一種解法不好 會重複計算很多值,時間複雜度以n的指數方式增長 long fibonacci int n 優化解法 從下往上計算。見解法二 動態規劃問題 class solution return m...

劍指offer 9 斐波那契數列

現在要求輸入乙個整數n,輸出斐波那契數列的第n項。傳統遞迴實現,需要求多個重複子問題。使用動態規劃,memo記錄,但是,只是用了兩個。因此改進冬天規劃 普通的動態規劃 int fibonacci int n for int i 2 i n i return memo n 使用三個int不停的交換 i...