题目
斐波那契数 (通常用 F(n) 表示)形成的序列称为 斐波那契数列 。该数列由 0 和 1 开始,后面的每一项数字都是前面两项数字的和。也就是:
- F(0) = 0,F(1) = 1
- F(n) = F(n - 1) + F(n - 2),其中 n > 1
给定 n ,请计算 F(n) 。
- 来源:力扣(LeetCode)
- 链接:leetcode.cn/problems/fi…
- 著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
解法一
代码
- 递归
public int fib(int n) {
if (n == 0 || n == 1) {
return n;
}
return fib(n-1) + fib(n-2);
}
复杂度
- 时间复杂度:O(2^n)
- 空间复杂度:O(n)
解法二
代码
- 动态规划
public int fib(int n) {
if (n == 0 || n == 1) {
return n;
}
int a = 0;
int b = 1;
int sum = 0;
for (int i = 2; i <= n; i++) {
sum = a + b;
a = b;
b = sum;
}
return sum;
}
复杂度
- 时间复杂度:O(n)
- 空间复杂度:O(1)