题目:
斐波那契数,通常用 F(n) 表示,形成的序列称为 斐波那契数列 。该数列由 0 和 1 开始,后面的每一项数字都是前面两项数字的和。也就是:
示例:
F(0) = 0,F(1) = 1
F(n) = F(n - 1) + F(n - 2),其中 n > 1
解法
两种方法,自顶向下;自底向上。
代码
//Botton-up
//自底向上
class Solution {
public:
int fib(int n) {
if (n == 0) return 0;
vector<int> Fibonacci(n + 1);
Fibonacci[0] = 0;
Fibonacci[1] = 1;
for (int i = 1; i < n; i++) {
Fibonacci[i+1] = Fibonacci[i] + Fibonacci[i - 1];
}
return Fibonacci[n];
}
};
//Top-down
//自顶向下
class Solution {
public:
int fib(int n) {
if (n < 2) {
return n;
}
return fib(n - 1) + fib(n - 2);
}
};