求斐波那契數,你還在用遞迴嗎?

2021-10-10 11:43:40 字數 668 閱讀 9058

f(0) = 0,  

f(1) = 1

f(n) = f(n - 1) + f(n - 2), 其中 n > 1.

給定 n,計算 f(n)。

根據題意,我們可以用遞迴求解。

public int fib(int n) 

return fib(n-1) + fib(n-2);

}

但是這個是最好的解法嗎?

發現什麼問題沒?

那有沒有其它的好辦法呢?

我們嘗試從小往大推演,把計算結果儲存下來,避免重複計算,這種方法一般稱之為動態規劃。

public int fib(int n) 

int cache = new int[n+1];

cache[0] = 0;

cache[1] = 1;

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

return cache[n];

}

public int fib(int n) 

int m = 0, n = 1;

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

return n;

}

用遞迴求斐波那契數

斐波那契數是第乙個數和第二個數都為1,從第三個數開始,後面的是是前面相鄰兩個數的和。定義的函式如下所示 int fib int m if語句為了確定第一位和第二位都為1,完整的 如下所示 include include int fib int m int main printf n printf n...

遞迴 斐波那契

題 若一頭小母牛,從出生起第四個年頭開始每年生一頭母牛,按此規律,第n年有多少頭母牛?具體分析 1 分析題目 從出生起第四個年頭開始每年生一頭母牛 時間 年 未成熟母牛 頭 成熟母牛 頭 母牛總數 頭 1 1 0 1 2 1 0 1 3 1 0 1 4 0 1 1 5 1 1 2 6 2 1 3 7...

斐波那契遞迴

const fib1 n if n 0 else if n 1 else console.log fib1 5 函式呼叫順序 fib1 5 fib1 4 fib1 3 fib1 2 fib1 1 fib1 0 fib1 1 fib1 2 fib1 1 fib1 0 fib1 3 fib1 2 fib...