第 n 个斐波那契数

第 n 个斐波那契数

题目描述
这个题目说的是,给你一个非负整数 n,你要写一个函数返回第 n 个斐波那契数。其中斐波那契数列最开始的两项是 0 和 1,后面任意一项都是它前面两个数字之和。

比如说,你写的函数是 f,那么就有:

f(0) = 0,
f(1) = 1,
f(2) = 0 + 1 = 1,
f(3) = 1 + 1 = 2,
f(4) = 1 + 2 = 3,
f(5) = 2 + 3 = 5,
...

以此类推。

代码

public class AlgoCasts {

  // Time: O(2^n), Space: O(n)
  public int fibRecursive(int n) {
    if (n <= 0) return 0;
    if (n == 1) return 1;
    return fibRecursive(n-1) + fibRecursive(n-2);
  }

  // Time: O(n), Space: O(n)
  public int fibIterative(int n) {
    if (n <= 0) return 0;
    if (n == 1) return 1;
    int[] d = new int[n+1];
    d[0] = 0; d[1] = 1;
    for (int i = 2; i <= n; ++i)
      d[i] = d[i-1] + d[i-2];
    return d[n];
  }

  // Time: O(n), Space: O(1)
  public int fibIterativeO1(int n) {
    if (n <= 0) return 0;
    if (n == 1) return 1;
    int first = 0, second = 1;
    for (int i = 2; i <= n; ++i) {
      int third = first + second;
      first = second;
      second = third;
    }
    return second;
  }

}

  转载请注明: ForwardXu 第 n 个斐波那契数

 上一篇
整数 1 到 n 中 1 出现的次数 整数 1 到 n 中 1 出现的次数
整数 1 到 n 中 1 出现的次数题目描述这个题目说的是,给你一个整数 n,你要计算出 1 到 n 这 n 个整数中,数字 1 出现的次数。 比如说,给你的整数 n 等于 12: n = 12 1 到 12 中包含数字 1 的整数有:
2019-02-17
下一篇 
旋转二维数组 旋转二维数组
旋转二维数组题目描述这个题目说的是,给你一个 n x n 的二维数组,你要沿顺时针方向将它旋转 90 度。要求你不能使用额外的存储空间,就地在原数组操作。 比如说,给你的二维数组是: 1, 2, 3 4, 5, 6 7, 8, 9 顺时
2019-02-17
  目录