記憶性遞迴

2022-08-17 19:54:13 字數 570 閱讀 6127

斐波那契數列指的是這樣乙個數列:1、1、2、3、5、8、13、21、34、……

在數學上,斐波納契數列以如下被以遞推的方法定義:f(1)=1,f(2)=1, f(n)=f(n-1)+f(n-2)(n>=3,n∈n*)

1.普通斐波那契數列解法

1 #include2 #include3

using

namespace

std;45

int fibonacci(intn)6

1213

intmain()

1419 printf("\n"

);20

return0;

21 }

2.記憶性遞迴   用乙個陣列儲存求得的結果  適用於資料項比較大的情況

1 #include2 #include3

using

namespace

std;45

int f[100];6

7int fibonacci(intn)8

18}1920

intmain()

21

記憶性遞迴

初學者一般都會在斐波那契數列那裡學到遞迴,但其實如果計算斐波那契數列達到40以上的時候,普通的遞迴會很慢。例如計算第40位的斐波那契數,普通的遞迴花費大約2s,而記憶性遞迴則需1s就可完成計算。原因在於普通的遞迴計算f 5 時需要計算f 4 f 3 計算f 4 時還需要計算f 3 f 2 但是計算f...

記憶性遞迴

遞迴有時候會出現重複計算的情況 如下例題 因此為了提高 效率,就需要進記憶性遞迴 即只對第一次出現的新資料進行計算並進行儲存,而對於已經計算過的結果,只需將結果取出即可。它可以提高效率,避免計算機進行重複已做過的完全相同的工作而降低效率 例1 要求找出具有下列性質數的個數 包含輸入的自然數n 先輸入...

藍橋杯 地宮取寶 記憶性遞迴

地宮取寶 時間限制 1.0s 記憶體限制 256.0mb 問題描述 x 國王有乙個地宮寶庫。是 n x m 個格仔的矩陣。每個格仔放一件寶貝。每個寶貝貼著價值標籤。地宮的入口在左上角,出口在右下角。小明被帶到地宮的入口,國王要求他只能向右或向下行走。走過某個格仔時,如果那個格仔中的寶貝價值比小明手中...