斐波那契数列求第n项值

斐波那契数列

已知: 斐波那契数列第n项是除前两项以外,第n-2与第n-1项的和:S(n) = S(n-2) + S(n-1)。

优化前

// 优化前
const n = "";

function getFibonacciSequenceItem(n) {
  let arr = [0, 1];
  let item = 0;

  for (let i = 2; i < n; i++) {
    item = BigInt(arr[i - 2]) + BigInt(arr[i - 1]);
    arr.push(item);
  }
  return item;
}

console.log(getFibonacciSequenceItem(10));

优化后

// 优化后丢弃了无用的数据 在n = 30000 时优化后时间大约为优化前一半,且减少了内存压力
const n = "";

function getFibonacciSequenceItem(n) {
  let arr = [0, 1];
  let item = 0;
  if (n < 2) {
    return arr[n];
  }

  for (let i = 2; i < n + 1; i++) {
    item = BigInt(arr[0]) + BigInt(arr[1]);
    arr[0] = arr[1];
    arr[1] = item;
  }

  return item;
}

getFibonacciSequenceItem(10);

posted @ 2022-11-11 17:14  kidrue  阅读(504)  评论(0)    收藏  举报