劍指:斐波納契數列動態規劃求解

題目描述

在數學上,斐波納契數列以如下被以遞歸的方法定義:F(0)=0,F(1)=1,F(n)=F(n-1)+F(n-2)(n≥2,n∈N*),現在要求輸入一個整數n,請你輸出斐波那契數列的第n項。

n<=39

思路1:迭代法

int Fibonacci(int n) 
    {
        if(n==0) return 0;
        if(n==1) return 1;
        int a=0,b=1;
        for(int i=1;i<n;i++)
        {
            b=a+b;
            a=b-a;
        }
        return b;
    }

思路2: 自頂向下動態規劃,減少重複計算

int f[40];
int Fibonacci(int n) 
    {
        if(n==0) return 0;
        if(n==1) return 1;
        if(f[n]!=0) return f[n];
        int t=Fibonacci(n-1)+Fibonacci(n-2);
        f[n]=t;
        return t;
    }


思路3:自底向上動態規劃

    int f[40];
    int Fibonacci(int n) 
    {
        f[0]=0;
        f[1]=1;
        if(n==0) return 0;
        if(n==1) return 1;
        for(int i=2;i<=n;i++)
        {
            f[i]=f[i-1]+f[i-2];
        }
        return f[n];
    }

發佈了50 篇原創文章 · 獲贊 3 · 訪問量 5萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章