当前位置:首页 > JavaScript

1.1.2.3.5.8.13.21 js实现

2026-04-06 15:42:07JavaScript

使用 JavaScript 生成斐波那契数列

斐波那契数列是一个经典的数学序列,其中每个数字是前两个数字之和。以下是用 JavaScript 实现斐波那契数列的几种方法。

使用循环生成斐波那契数列

通过循环可以高效地生成斐波那契数列的前 N 项。

1.1.2.3.5.8.13.21 js实现

function fibonacci(n) {
  const sequence = [1, 1];
  for (let i = 2; i < n; i++) {
    sequence.push(sequence[i - 1] + sequence[i - 2]);
  }
  return sequence;
}

console.log(fibonacci(7)); // 输出: [1, 1, 2, 3, 5, 8, 13]

使用递归生成斐波那契数列

递归方法虽然简洁,但对于较大的 n 值性能较差。

1.1.2.3.5.8.13.21 js实现

function fibonacci(n) {
  if (n <= 1) return 1;
  return fibonacci(n - 1) + fibonacci(n - 2);
}

// 生成前 7 项
const sequence = [];
for (let i = 0; i < 7; i++) {
  sequence.push(fibonacci(i));
}
console.log(sequence); // 输出: [1, 1, 2, 3, 5, 8, 13]

使用动态规划优化递归

通过缓存已计算的值,可以显著提高递归方法的性能。

function fibonacci(n, memo = {}) {
  if (n in memo) return memo[n];
  if (n <= 1) return 1;
  memo[n] = fibonacci(n - 1, memo) + fibonacci(n - 2, memo);
  return memo[n];
}

// 生成前 7 项
const sequence = [];
for (let i = 0; i < 7; i++) {
  sequence.push(fibonacci(i));
}
console.log(sequence); // 输出: [1, 1, 2, 3, 5, 8, 13]

使用生成器函数

生成器函数可以按需生成斐波那契数列的值,适合处理无限序列。

function* fibonacciGenerator() {
  let a = 1, b = 1;
  yield a;
  yield b;
  while (true) {
    [a, b] = [b, a + b];
    yield b;
  }
}

// 获取前 7 项
const fib = fibonacciGenerator();
const sequence = [];
for (let i = 0; i < 7; i++) {
  sequence.push(fib.next().value);
}
console.log(sequence); // 输出: [1, 1, 2, 3, 5, 8, 13]

注意事项

  • 循环方法是最高效的方式,适合生成固定长度的序列。
  • 递归方法简单但性能较差,适合学习递归概念。
  • 动态规划方法优化了递归的性能,适合需要多次计算的场景。
  • 生成器函数适合需要按需生成值的场景,如无限序列。

根据具体需求选择合适的方法。

标签: js
分享给朋友:

相关文章

js实现瀑布流

js实现瀑布流

实现瀑布流布局 瀑布流布局是一种常见的网页布局方式,常用于图片展示、商品列表等场景。以下是使用 JavaScript 实现瀑布流布局的几种方法。 纯 JavaScript 实现 通过计算元素的位置和…

js实现点击显示和隐藏

js实现点击显示和隐藏

实现点击显示和隐藏的JavaScript方法 使用classList.toggle切换类名 通过添加/移除CSS类控制元素的显示与隐藏,需提前在CSS中定义隐藏样式(如display: none)。…

js节流实现

js节流实现

节流的概念 节流(Throttle)是一种限制函数执行频率的技术,确保函数在一定时间间隔内只执行一次。常用于滚动事件、窗口调整等高频触发的场景。 基础实现方法 使用时间戳判断是否执行函数: fun…

js实现原理

js实现原理

JavaScript 实现原理 JavaScript 是一种解释型语言,其实现原理涉及多个核心组件和运行机制,包括引擎、运行时环境、事件循环等。 引擎与解释执行 现代 JavaScript 引擎(如…

js 实现递归

js 实现递归

递归的基本概念 递归是指函数直接或间接调用自身的过程。在JavaScript中,递归通常用于解决可以分解为相似子问题的问题,如阶乘、斐波那契数列、树形结构遍历等。 递归的实现要点 基线条件(Base…

js 实现全屏

js 实现全屏

使用 requestFullscreen 方法 通过调用元素的 requestFullscreen 方法可以实现全屏。该方法兼容现代浏览器,但不同浏览器可能需要前缀。 const element =…