js实现n
实现阶乘(n!)的 JavaScript 方法
递归方法
递归是一种直接实现阶乘的方式,利用函数调用自身的特点。注意基线条件(n ≤ 1)以避免无限递归。

function factorialRecursive(n) {
if (n <= 1) return 1;
return n * factorialRecursive(n - 1);
}
迭代方法
使用循环从 1 累乘到 n,性能通常优于递归,尤其对于大数计算(避免栈溢出)。

function factorialIterative(n) {
let result = 1;
for (let i = 2; i <= n; i++) {
result *= i;
}
return result;
}
尾递归优化
某些 JavaScript 引擎支持尾调用优化(TCO),可避免递归时的栈溢出问题。
function factorialTailRecursive(n, accumulator = 1) {
if (n <= 1) return accumulator;
return factorialTailRecursive(n - 1, n * accumulator);
}
大数处理(BigInt)
当 n 较大时(如 n > 20),普通数值类型会溢出,需使用 BigInt。
function factorialBigInt(n) {
let result = 1n; // BigInt 字面量
for (let i = 2n; i <= BigInt(n); i++) {
result *= i;
}
return result;
}
注意事项
- 性能:迭代法在大数计算中更稳定,递归可能因调用栈深度限制而失败。
- 输入验证:需处理负数和非整数输入(如抛出错误或返回
null)。 - 应用场景:根据需求选择方法,例如需要代码简洁性(递归)或性能(迭代)。






