当前位置:首页 > JavaScript

1.1.2.3.5.8.13.21 js实现

2026-02-01 22:38:45JavaScript

使用JavaScript生成斐波那契数列

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

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

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

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

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

function fibonacciRecursive(n, sequence = [1, 1]) {
  if (sequence.length >= n) {
    return sequence;
  }
  const nextValue = sequence[sequence.length - 1] + sequence[sequence.length - 2];
  return fibonacciRecursive(n, [...sequence, nextValue]);
}

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

动态规划优化递归

递归方法在计算较大的斐波那契数列时可能会有性能问题,可以使用动态规划优化:

function fibonacciDP(n) {
  if (n === 1) return [1];
  if (n === 2) return [1, 1];

  const dp = [1, 1];
  for (let i = 2; i < n; i++) {
    dp[i] = dp[i - 1] + dp[i - 2];
  }
  return dp;
}

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

生成器函数实现

如果需要按需生成斐波那契数列,可以使用生成器函数:

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

const fib = fibonacciGenerator();
const sequence = Array.from({ length: 8 }, () => fib.next().value);
console.log(sequence); // 输出: [1, 1, 2, 3, 5, 8, 13, 21]

使用闭包实现

闭包可以保存状态,适合生成连续的斐波那契数列:

function createFibonacciClosure() {
  let a = 1, b = 1;
  return function() {
    const next = a;
    a = b;
    b = next + b;
    return next;
  };
}

const getNextFibonacci = createFibonacciClosure();
const sequence = Array.from({ length: 8 }, () => getNextFibonacci());
console.log(sequence); // 输出: [1, 1, 2, 3, 5, 8, 13, 21]

以上方法都可以生成斐波那契数列,选择哪种方法取决于具体的应用场景和性能需求。循环和动态规划方法适合生成固定长度的序列,而生成器和闭包适合按需生成序列。

1.1.2.3.5.8.13.21 js实现

标签: js
分享给朋友:

相关文章

js实现选项卡

js实现选项卡

实现选项卡的基本思路 选项卡通常由一组标签和对应的内容面板组成。点击标签时,显示对应的内容面板,隐藏其他面板。实现这一效果需要结合HTML结构、CSS样式和JavaScript交互逻辑。 HTML…

jquery.js

jquery.js

jQuery 是一个快速、简洁的 JavaScript 库,简化了 HTML 文档遍历、事件处理、动画设计和 Ajax 交互等操作。以下是关于 jQuery.js 的核心信息和使用方法: 获取 j…

js 实现vue

js 实现vue

Vue.js 的基本实现 在 JavaScript 中实现 Vue.js 的核心功能,可以通过数据绑定、响应式系统和虚拟 DOM 来实现。以下是实现 Vue.js 核心功能的简化版本。 数据响应式系…

js实现类

js实现类

JavaScript 实现类的几种方式 JavaScript 是一种基于原型的语言,但在 ES6 之后引入了 class 语法糖,使得实现类更加直观。以下是几种常见的实现方式: 使用构造函数 传统的…

js防抖和节流实现

js防抖和节流实现

防抖(Debounce)的实现 防抖的核心思想是在事件被触发后,延迟执行回调函数。如果在延迟时间内再次触发事件,则重新计时。适用于输入框搜索、窗口大小调整等场景。 function debounc…

js 实现分页

js 实现分页

实现分页的基本逻辑 分页功能通常需要后端返回数据总量或总页数,前端根据当前页码和每页条数截取对应数据。以下是一个基于JavaScript的简单分页实现方案: 前端分页实现 假设已有从后端获取的完整…