描述
大家都知道斐波那契数列,现在要求输入一个整数n,请你输出斐波那契数列的第n项(从0开始,第0项为0,第1项是1)。
n\leq 39n≤39
示例1
输入:
4
复制
返回值:
3
1、递归:效率低下
class Solution {
public:
int Fibonacci(int n) {
if (n == 0) {
return 0;
}
if (n == 1) {
return 1;
}
return Fibonacci(n - 1) + Fibonacci(n - 2);
}
};```
2、迭代法 最喜欢
```cpp
class Solution {
public:
int Fibonacci(int n) {
if (n == 0) {
return 0;
}
if (n == 1) {
return 1;
}
int fistNumber = 0;
int SecondNumber = 1;
int result = 0;
for (int i = 2; i <= n; i++) {
result = SecondNumber + fistNumber;
fistNumber = SecondNumber;
SecondNumber = result;
}
return result;
}
};```
3、动态规划,用个数组保存,但是需要额外的空间
```cpp
class Solution {
public:
int Fibonacci(int n) {
if (n == 0) {
return 0;
}
if (n == 1) {
return 1;
}
vector<int> result(n + 1);
result[0] = 0;
result[1] = 1;
for (int i = 2; i <= n; i++) {
result[i] = result[i - 1] + result[i - 2];
}
return result[n];
}
};
4、记忆化数组,复杂,也不快啊
class Solution {
public:
int Fibonacci(int n) {
if (n == 0) {
return 0;
}
if (n == 1) {
return 1;
}
vector<int> result(n + 1);
result[0] = 0;
result[1] = 1;
for (int i = 2; i <= n; i++) {
result[i] = result[i - 1] + result[i - 2];
}
return result[n];
}
};