斐波拉契数列的多种实现方式

114 阅读1分钟

斐波拉契数列的几种求解方法,包括递归,递归优化,动态规划。

递归方法

export const fib = (n: number) => {
  if ([0, 1].includes(n)) {
    return n;
  }
  return fib(n - 1) + fib(n - 2);
};

递归加缓存方法

export const fibMemory = (n: number) => {
  const memo = [0, 1];

  const calc = (m: number) => {
    if (memo[m]) {
      return memo[m];
    }
    return calc(m - 1) + calc(m - 2);
  };

  return calc(n);
};

动态规划方法

export const fibDynamics = (n: number) => {
  if ([0, 1].includes(n)) {
    return n;
  }

  const dy = [0, 1];

  for (let i = 2; i <= n; i++) {
    dy[i] = dy[i - 1] + dy[i - 2];
  }

  return dy[n];
};