1、最简单,容易理解的方法
斐波那契数列的标准公式为:
F(0)=0,F(1)=1, F(n)=F(n-1)+F(n-2)(n>=2,n∈N*)
class Solution {
public:
int Fibonacci(int n) {
if (n <= 1)
return n;
return Fibonacci(n-1) + Fibonacci(n-2);
}
};
复杂度
时间复杂度:O(2^n)O(2n)
空间复杂度:O(1)O(1)
2、优化方法
定义两个变量,pre1代表f(n-2),pre2代表f(n-1);
class Solution {
public:
int Fibonacci(int n) {
if (n == 0)
return 0;
if (n == 1)
return 1;
int pre1 = 0, pre2 = 1 ;
int result;
for(int i = 2; i <= n ; i++)
{
result = pre2 + pre1;
pre1 = pre2;
pre2 = result;
}
return result;
}
};
复杂度
时间复杂度:O(n)O(n)
空间复杂度:O(1)O(1)
3、进一步优化
class Solution {
public:
int Fibonacci(int n) {
if (n == 0)
return 0;
if (n == 1)
return 1;
int temp = 0, result = 1 ;
for(int i = 2; i <= n ; i++)
{
result = temp + result;
temp = result - temp;
}
return result;
}
};
复杂度
时间复杂度:O(n)O(n)
空间复杂度:O(1)O(1)