斐波拉契數列解法

2021-10-22 21:32:13 字數 547 閱讀 2850

斐波那契數列的定義是 f(n + 1) = f(n) + f(n - 1)f(n+1)=f(n)+f(n−1) ,生成第 nn 項的做法有以下幾種:

遞迴法:

原理: 把 f(n)f(n) 問題的計算拆分成 f(n-1)f(n−1) 和 f(n-2)f(n−2) 兩個子問題的計算,並遞迴,以 f(0)f(0) 和 f(1)f(1) 為終止條件。

缺點: 大量重複的遞迴計算,例如 f(n)f(n) 和 f(n - 1)f(n−1) 兩者向下遞迴需要 各自計算 f(n - 2)f(n−2) 的值。

記憶化遞迴法:

原理: 在遞迴法的基礎上,新建乙個長度為 nn 的陣列,用於在遞迴時儲存 f(0)f(0) 至 f(n)f(n) 的數字值,重複遇到某數字則直接從陣列取用,避免了重複的遞迴計算。

缺點: 記憶化儲存需要使用 o(n)o(n) 的額外空間。

動態規劃:

原理: 以斐波那契數列性質 f(n + 1) = f(n) + f(n - 1)f(n+1)=f(n)+f(n−1) 為轉移方程。

從計算效率、空間複雜度上看,動態規劃是本題的最佳解法。

斐波拉契數列

斐波拉契數列 1 1 2 3 5 8 13 21 34.其中每乙個數字都是前兩個數字的和。遞迴計算 long fibonacci int n 非遞迴計算 long fibonacci int n return result 這個函式的遞迴實現使用了雙重遞迴 double recursion 函式對本...

斐波拉契數列

編寫彙編程序列印1 1000的斐波拉契數列 原始碼assume cs code,ss stack,ds data data segment fibo dw 0,1,64 dup 0 str db the fibo list is 0ah,0dh,data ends stack segment db ...

斐波拉契數列

斐波拉契數列 這個數列從第三項開始,每一項都等於前兩項之和。已知斐波拉契數列的前兩項都是1,我們定義求斐波拉契數列的第n項 n 50 的函式為fbnq,請補充完成對fbnq函式的定義。輸入格式 共一行,為乙個正整數。輸出格式 共一行,為乙個正整數。輸入樣例 7輸出樣例 13 斐波拉契數列 def f...