劍指offer 09 斐波那契數列

2021-07-22 06:23:44 字數 769 閱讀 8423

寫乙個函式,輸入n,求斐波那契數列的第n項。

思路: 遞迴 、 順序求 、公式。

遞迴:重複的節點數會隨著n的增大而急劇增加,這意味著計算量會隨著n的增大而急劇增大。事實上,用遞迴的方法計算的時間複雜度是以n的指數的方式遞增的。

順序:從下往上計算,首先計算f(0)和f(1)算出f(2),再根據f(1)和f(2)算出f(3)……依次類推就可以算出第n項了。很容易理解,這種思路的時間複雜度為o(n)。

公式:第三種方法把求斐波那契數列轉換成求矩陣的乘方,是一種很有創意的演算法。雖然我們可以喲個o(logn)求的矩陣的n次方,但由於隱含的時間常熟較大,很少會有軟體採用這種演算法,另外,實現這種演算法的**也交複雜,不太適用於面試。

遞迴:

順序:

public

long

fibonacci(int n)

if(n == 1)

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

return result;

} public

static

void

main(string args)

劍指Offer09 斐波拉契數列數列問題

斐波拉契數列問題 要求實現鍵盤輸入乙個數n,輸出斐波拉契數列的第n項。斐波拉契數列定義 f 0 0 f 1 1 f n f n 1 f n 2 按照斐波拉契地推公式很容易想到的方法就是採用遞迴來求解,但是遞迴方法存在很嚴重的效率問題 例如要求f 10 需要先求f 9 和f 8 同樣要求f 9 必須先...

劍指offer 斐波那契數列

題目1描述 寫乙個函式,輸入n,求斐波那契數列的第n項。斐波那契數列的定義如下 f n 0 n 0 f n 1 n 1 f n f n 1 f n 2 n 1 分析描述 在大多數的c語言教科書中,一般會用遞迴求斐波那契數列。如下 long long fibonacci unsigned int n ...

劍指offer 斐波那契數列

記錄來自 劍指offer 的演算法題。題目如下 寫乙個函式,輸入n,實現斐波那契數列的第n項。斐波那契數列的定義如下 f n 01 f n 1 f n 2 n 0 n 1n 1 教科書上通常在介紹遞迴的時候都會使用斐波那契數列作為例子,然後給出下列解法 long long fibonacci uns...