当前位置:首页 > 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]

使用闭包实现

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

1.1.2.3.5.8.13.21 js实现

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]

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

标签: js
分享给朋友:

相关文章

js实现拖拽

js实现拖拽

实现拖拽的基本步骤 使用JavaScript实现拖拽功能需要监听鼠标事件,包括mousedown、mousemove和mouseup。以下是实现的基本逻辑: const draggableEleme…

js实现验证码

js实现验证码

使用Canvas生成图形验证码 在HTML中创建一个Canvas元素用于绘制验证码。通过JavaScript随机生成数字或字母组合,并添加干扰线、噪点等干扰元素增强安全性。 <canvas i…

js实现驼峰

js实现驼峰

实现驼峰命名的几种方法 使用正则表达式和字符串替换 通过正则表达式匹配字符串中的特定模式(如下划线或短横线),并将其后的字母转换为大写,同时移除分隔符。 function toCamelCase(s…

js实现交换

js实现交换

交换变量的方法 在JavaScript中,交换两个变量的值有多种方法。以下是常见的几种实现方式: 使用临时变量 通过引入一个临时变量来存储其中一个变量的值,实现交换: let a = 1; le…

js实现菜单

js实现菜单

实现基本HTML结构 使用HTML创建菜单的基本框架,通常包含<ul>和<li>元素。示例结构如下: <ul id="menu"> <li><…

js实现按钮点击

js实现按钮点击

实现按钮点击的JavaScript方法 HTML按钮元素 在HTML中创建按钮元素,为其添加id或class以便JavaScript选择: <button id="myButton">点…