【题目】

2020-09-30 14-54-52屏幕截图.png

【示例】

2020-09-30 14-55-37屏幕截图.png

【解法】

1.普通递归

  1. /**
  2. * @param {number} N
  3. * @return {number}
  4. */
  5. var fib = function (N) {
  6. if (!N) {
  7. return 0;
  8. }
  9. if (N === 1 || N === 2) {
  10. return 1;
  11. } else {
  12. return fib(N - 1) + fib(N - 2);
  13. }
  14. };

2.动态规划

  1. /**
  2. * @param {number} N
  3. * @return {number}
  4. */
  5. var fib = function (N) {
  6. let p1 = 0, p2 = 1, result = 0;
  7. if (N < 2)
  8. return N;
  9. for (let i = 2; i <= N; i++) {
  10. result = p1 + p2;
  11. [p1, p2] = [p2, result]; //同p1=p2;p2=result;ES6的解构赋值
  12. }
  13. return result;
  14. };