遞迴 迭代(動態規劃)解決斐波那契數列

2021-10-17 03:32:56 字數 773 閱讀 4509

大家都知道斐波那契數列,現在要求輸入乙個整數n,請你輸出斐波那契數列的第n項(從0開始,第0項為0,第1項是1)n≤39

n\leq39

n≤39

。遞迴,f(n

)=f(

n−1)

+f(n

−2

)f(n)=f(n-1)+f(n-2)

f(n)=f

(n−1

)+f(

n−2)

,自上而下求解並回溯到根節點,是一顆完全二叉樹,所以時間複雜度o(2

n2^n

2n);空間複雜度為遞迴棧的大小,所以是o(n)。

迭代(動態規劃):自下而上求解,記錄下中間值,dp[0]=0,dp[1]=1,dp[2]=dp[1]+dp[0]…這樣迭代到dp[n]即為所得解,時間複雜度o(n),空間複雜度o(n)。因為每輪迭代只和三個元素相關,我們可以用2個變數不斷更新來替代陣列,first=0,sum=1,sum=sum+first,first=sum-first…,優化後空間複雜度為o(1)。

public

class

solution

// return res[n];

//直接用兩個變數更新中間值

int first =

0, sum =1;

for(

int i =

2; i <= n; i++

)return n ==

0? first : sum;

}}

動態規劃之斐波那契數

70.爬樓梯 e 假設你正在爬樓梯。需要 n 階你才能到達樓頂。每次你可以爬 1 或 2 個台階。你有多少種不同的方法可以爬到樓頂呢?注意 給定 n 是乙個正整數。第n階台階的路線等於n 1階的路線數加上n 2階的路線數,第一階的路線數為1,第二階路線數等於2,遍歷求和即可 class soluti...

遞迴和動態規劃 斐波那契數列

程式設計師 面試指南 chapter 4 感受 mulmatrix函式和matrixpower函式寫法要注意細節,需要牢記加速矩陣乘法的演算法思路將時間複雜度降低!暴力遞迴,o 2 n intf1 int n return res 利用矩陣,o log n 牛客上 給出乙個整數 n,請輸出斐波那契數...

斐波那契數(動態規劃法)

1.遞迴方法 斐波那契數 include using namespace std int f 1000 long long fib int n int main int argc,char argv 2.自頂向下帶備忘的動態規劃法 動態規劃法 自頂向下帶備忘 斐波那契數 include using ...