方法1:递归
时间复杂度高
class Solution {
public:
int Fibonacci(int n) {
if(n<=2) return 1;
else
return Fibonacci(n-1)+Fibonacci(n-2);
}
};
时间复杂度:O(2^n) 空间复杂度:递归栈的空间
方法2:动态规划
class Solution {
public:
int dp[50]{0};
int Fibonacci(int n) {
dp[1] = 1, dp[2] =1;
for (int i = 3 ; i <= n ; i ++) dp[i] = dp[i-1]+dp[i-2];
return dp[n];
}
};
时间复杂度:O(n),空间复杂度O(n)进一步优化,
class Solution {
public:
int Fibonacci(int n) {
int a=1,b=1,sum=1;
for(int i=3;i<=n;i++)
{
sum=a+b;
a=b;
b=sum;
}
return sum;
}
};
间复杂度:O(n) 空间复杂度:O(1)