《劍指Offer》7 斐波那契數列

2021-09-10 21:43:36 字數 1286 閱讀 5577

題目:7. 斐波那契數列

知識點:遞迴、動態規劃

題目描述:

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

n<=39

解題思路:

思路比較簡單,動態規劃和遞迴遞迴都可以實現,不做過多贅述。

**:

//解法一(自研):

int fibonacci(int n)

//解法二(劍指offer 遞迴實現):

long long fibonacci_solution1(unsigned int n)

//解法三(劍指offer 迴圈實現):

long long fibonacci_solution2(unsigned n)

; if(n < 2)

return result[n];

long long fibnminusone = 1;

long long fibnminustwo = 0;

long long fibn = 0;

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

return fibn;

}//解法四 (劍指offer 基於矩陣乘法):

struct matrix2by2

long long m_00;

long long m_01;

long long m_10;

long long m_11;

};matrix2by2 matrixmultiply

( const matrix2by2& matrix1,

const matrix2by2& matrix2

)matrix2by2 matrixpower(unsigned int n)

else if(n % 2 == 0)

else if(n % 2 == 1)

return matrix;

}long long fibonacci_solution3(unsigned int n)

; if(n < 2)

return result[n];

matrix2by2 powernminus2 = matrixpower(n - 1);

return powernminus2.m_00;

}

劍指offer 7 斐波那契數列

題目 大家都知道斐波那契數列,現在要求輸入乙個整數n,請你輸出斐波那契數列的第n項。n 39 思路 看到斐波那契數列就想有用遞迴的衝動,沒錯,剛開始我看了就往那個方向去想了,而且遞迴 只需要幾行就行了,if n 1 returnn elsereturnfibonacci n 1 fibonacci ...

劍指Offer (7)斐波那契數列

題目說明 大家都知道斐波那契數列,現在要求輸入乙個整數n,請你輸出斐波那契數列的第n項。n 39 實現如下 0 1 1 2 3 5 8 13 21.簡潔的遞迴,但是注意消除重複計算項,採用map儲存已計算的n的value class solution else return it second 若之...

劍指offer7 斐波那契數列

大家都知道斐波那契數列,現在要求輸入乙個整數n,請你輸出斐波那契數列的第n項 從0開始,第0項為0 n 39 首先貼乙個斐波那契數列的定義 斐波那契數列 fibonacci sequence 又稱 分割數列 因數學家列昂納多 斐波那契 leonardoda fibonacci 以兔子繁殖為例子而引入...