题解 | #斐波那契数列#
斐波那契数列
https://www.nowcoder.com/practice/c6c7742f5ba7442aada113136ddea0c3
class Solution {
public:
int f[50] = {0};
int Fibonacci(int n) {
if (n <= 2) return 1;
if (f[n] > 0) return f[n]; //递归 + 记忆化搜索,时间O(n),只算了f[1到n],没有重复计算,空间复杂度O(n),栈深度为n
return f[n] = (Fibonacci(n-1)+Fibonacci(n-2));
}
};
/*class Solution {
public:
int Fibonacci(int n) {
if (n<=2) return 1;
return Fibonacci(n-1) + Fibonacci(n-2);
}
//递归法:时间复杂度:O(2^n) 空间复杂度O(n);
};*/
/*
int Fibonacci(int n) {
// write code here
vector<int>dp(n + 1, 0);
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)
*/
/*
int Fibonacci(int n) {
if (n == 1 || n == 2){
return 1;
}
// write code here
int a = 1; //状态压缩
int b = 1;
int tmp;
for (int i = 3; i <= n; i++){
tmp = a + b;
a = b;
b = tmp;
}
return tmp;
}
//动态规划 + 状态压缩:时间复杂度:O(n) 空间复杂度:O(1)
*/
