描述
大家都知道斐波那契数列,现在要求输入一个正整数 n ,请你输出斐波那契数列的第 n 项。
//递归:时间复杂度:O(2^n)
class Solution {
public:
int Fibonacci(int n) {
if(n==1||n==2)
return 1;
return Fibonacci(n-1)+Fibonacci(n-2);
}
};
//动态规划;时间复杂度:O(n) 空间复杂度:O(n)
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];
}
};
//动态优化
class Solution {
public:
int Fibonacci(int n) {
int a = 1 , b = 1 , c = 1;
for (int i = 3 ; i <= n ; i ++) {
c = a+b , a = b , b = c;
}
return c;
}
};