当前位置:首页 > JavaScript

实现阶乘JS

2026-03-15 05:09:11JavaScript

递归实现

递归方法通过函数调用自身来实现阶乘计算,代码简洁但需要注意栈溢出风险(大数计算时)。

实现阶乘JS

function factorialRecursive(n) {
  if (n === 0 || n === 1) return 1;
  return n * factorialRecursive(n - 1);
}

循环实现

迭代方法使用循环结构,性能优于递归且无栈溢出问题,适合处理较大数字。

实现阶乘JS

function factorialIterative(n) {
  let result = 1;
  for (let i = 2; i <= n; i++) {
    result *= i;
  }
  return result;
}

尾递归优化

ES6支持的尾调用优化版本,兼具递归的可读性和迭代的性能优势。

function factorialTailRecursive(n, accumulator = 1) {
  if (n === 0) return accumulator;
  return factorialTailRecursive(n - 1, n * accumulator);
}

大数处理

当需要计算超大数阶乘时,建议使用BigInt类型以避免数值精度丢失。

function factorialBigInt(n) {
  let result = 1n;
  for (let i = 2n; i <= BigInt(n); i++) {
    result *= i;
  }
  return result.toString();
}

性能对比

  • 递归:时间复杂度O(n),空间复杂度O(n)(调用栈)
  • 迭代:时间复杂度O(n),空间复杂度O(1)
  • 尾递归:在支持TCO的引擎中空间复杂度可优化为O(1)
  • BigInt版本适用于n>21的情况(普通number类型上限)

标签: 阶乘JS
分享给朋友:

相关文章

JS实现跳表

JS实现跳表

跳表的基本概念 跳表(Skip List)是一种基于概率的数据结构,允许快速查询、插入和删除操作,时间复杂度平均为O(log n)。它通过多层链表实现,每一层都是下一层的子集,高层链表跳过多个元素,从…

php怎么实现阶乘

php怎么实现阶乘

实现阶乘的方法 在PHP中,可以通过多种方式实现阶乘计算。阶乘是指从1乘到指定的正整数n,通常表示为n!。以下是几种常见的实现方法: 使用递归函数 递归是一种函数调用自身的技术,适用于阶乘计算。…

JS如何实现左右滑动

JS如何实现左右滑动

实现左右滑动的方法 使用 touchstart、touchmove 和 touchend 事件监听触摸操作,计算滑动距离和方向。 let startX, moveX; element.addEve…

JS实现日期滚动选择

JS实现日期滚动选择

实现日期滚动选择的基本思路 使用HTML、CSS和JavaScript创建一个日期滚动选择器,允许用户通过滚动选择年、月、日。核心是通过监听滚动事件,动态更新显示的值。 HTML结构 创建一个包含年…

JS实现文本的删除

JS实现文本的删除

使用 substring() 方法 通过指定起始和结束索引截取字符串的一部分,间接实现删除效果。 let str = "Hello World"; let newStr = str.substr…

JS能实现跨平台吗

JS能实现跨平台吗

JavaScript 的跨平台能力 JavaScript 是一种高度灵活的脚本语言,通过不同运行时环境和工具链可以实现跨平台开发。以下是其跨平台能力的核心实现方式: 浏览器环境 JavaScript…