js实现阶层
实现阶层的 JavaScript 方法
递归方法
递归是一种常见的计算阶层的方法,通过函数调用自身来实现。
function factorial(n) {
if (n === 0 || n === 1) {
return 1;
}
return n * factorial(n - 1);
}
console.log(factorial(5)); // 输出 120
迭代方法
使用循环结构(如 for 或 while)逐步计算阶层的值。
function factorial(n) {
let result = 1;
for (let i = 2; i <= n; i++) {
result *= i;
}
return result;
}
console.log(factorial(5)); // 输出 120
尾递归优化
某些 JavaScript 引擎支持尾递归优化(TCO),可以减少递归调用的堆栈开销。
function factorial(n, acc = 1) {
if (n === 0 || n === 1) {
return acc;
}
return factorial(n - 1, n * acc);
}
console.log(factorial(5)); // 输出 120
BigInt 支持大数阶层
当计算较大的阶层(如 n > 20)时,普通 Number 类型会溢出,可以使用 BigInt。

function factorial(n) {
let result = 1n; // BigInt 字面量
for (let i = 2n; i <= n; i++) {
result *= i;
}
return result;
}
console.log(factorial(20n)); // 输出 2432902008176640000n
注意事项
- 递归方法简洁,但在
n较大时可能导致堆栈溢出。 - 迭代方法性能更稳定,适合计算较大的
n。 - 使用
BigInt时,数字末尾需加n,否则会报类型错误。






