前言
题目:509. 斐波那契数
参考题解:斐波那契数-代码随想录
提交代码
拿到这道题目,直接使用递归通过。
class Solution {
public:
int fib(int n) {
if(n ==0)
return 0;
if(n == 1)
return 1;
return fib(n-1) + fib(n-2);
}
};
上面的递归过程,是树状展开,存在重复计算。为了避免重复,我们也可以从前向后推导。
class Solution {
public:
int fib(int n) {
if(n==0)
return 0;
if(n==1)
return 1;
vector<int> dp(n+1,0);
dp[0]=0,dp[1]=1;
for(int i=2; i<=n; i++){
dp[i] = dp[i-1] + dp[i-2];
}
return dp[n];
}
};