509. 斐波那契数[简单]

80 阅读1分钟

题目

斐波那契数 (通常用 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)