每日一練之斐波拉契數列

2021-10-08 10:42:26 字數 1360 閱讀 6800

斐波拉契數列相信大家都很熟了吧

下面我將介紹三種方法

方法一:經典遞迴

int

fibonacci

(int n)

方法二:方法一的改進

由於方法一中存在很多重複計算的步驟,效能大大降低

我定義乙個map容器,來存放第1項到第n項的值,如果map中沒有第 i 項的值,就將該元素插入到map中,下次如果需要用到第 i 項的值,直接從map中取即可,不用再重複計算一次

int

fibonacci2

(int n));

}else

int ppre =0;

//f(n - 2)的值

if(map.

find

(n -2)

== map.

end())

);}else

return

(pre + ppre)

%1000000007

;}

方法三:迭代
int

fibonacci3

(int n)

return third;

}

【方法三和方法一的效能比較】:兩種方法同時求第45項的值,方法三很快,方法一用了3秒多。

方法四:動態規劃

int

fibonacci4

(int n)

return dp[n]

;}

【高能預警】不怕死的朋友可以看接下來的斐波拉契加強版

剛看到這道題的朋友,肯定覺得不就是變成了從0開始嘛,有什麼好怕的?來遞迴,迭代走起。然後,你會發現,你怎麼都過不了,要麼時間超時,記憶體超出,要麼卡死求當n = 12這個數上。這道題求斐波拉契的一般方法好像都行不通了,只有試試數學方法

斐波拉契數列

斐波拉契數列 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...