怎么用 Javascript 创建一个递归函数

作者:Administrator 发布时间: 2026-05-09 阅读量:5 评论数:0

在 JavaScript 中创建递归函数,核心是函数内部调用自身,并包含终止条件(基线条件)防止无限循环。

基本结构

function recursiveFunction(params) {
  // 1. 基线条件:满足时停止递归
  if (/* 终止条件 */) {
    return /* 直接结果 */;
  }
  // 2. 递归步骤:调用自身,参数向基线条件靠近
  return recursiveFunction(/* 修改后的参数 */);
}

经典示例:计算阶乘

function factorial(n) {
  // 基线条件:n 为 0 或 1 时返回 1
  if (n <= 1) {
    return 1;
  }
  // 递归步骤:n * (n-1)!
  return n * factorial(n - 1);
}

console.log(factorial(5)); // 120

示例:斐波那契数列

function fibonacci(n) {
  if (n <= 1) return n; // 基线条件
  return fibonacci(n - 1) + fibonacci(n - 2); // 递归步骤
}

console.log(fibonacci(6)); // 8

注意事项

  1. 必须有基线条件,否则会栈溢出(Maximum call stack size exceeded)。

  2. 参数必须向基线条件变化,否则无限递归。

  3. 性能问题:递归可能重复计算(如斐波那契),可用记忆化优化。

  4. 尾递归优化:某些 JavaScript 引擎支持(严格模式下),但多数浏览器未实现,建议用循环替代深度递归。

尾递归示例(优化形式)

function factorialTail(n, acc = 1) {
  if (n <= 1) return acc;
  return factorialTail(n - 1, n * acc); // 尾调用
}

总结

创建递归函数只需三步:

  1. 定义函数,内部调用自身。

  2. 设置明确的基线条件。

  3. 确保每次递归调用都向基线条件靠近。

评论