1. 程式人生 > >斐波那契數列窮竭演算法優化

斐波那契數列窮竭演算法優化

int fib(int n){
    if(n<=1) return n;
    return fib(n-1)+fib(n-2);
}

在斐波那契數列中,如果fib(n)的n是一定的,無論多少次呼叫都會得到同樣的結果。因此如果計算一次後,用數列將其儲存起來,便可優化之後的計算。例如下圖在計算fib(10)時同樣的n被計算了很多次,因此可以獲得很大的優化空間。這種方法是出於記憶化搜尋或者動態規劃的想法,之後我們會介紹。

同樣的n被計算了多次

int memo[MAX_N + 1];

int fib(int n){
    if(n<=1) return n;
    if(memo[n] != 0
) return memo[n]; return memo[n] = fib(n-1) + fib(n-2); }