You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

递归函数实现10的乘法表遇栈溢出错误求助

递归实现10的乘法表问题修复

你的代码出现栈溢出错误、无法实现需求的核心问题有两个:

  • 每次递归调用都会重新声明let num = 1,导致终止条件num ===10永远无法触发,函数会无限递归调用自己,最终耗尽调用栈。
  • 逻辑完全偏离需求:当前代码在执行数值乘法运算,而非打印乘法表项,也没有逐步推进计数的逻辑。

以下是修正后的代码,可完全实现从1×10到10×10的乘法表打印:

function recursionTable(multiplier, num = 1) {
    // 终止条件:计数超过10时停止递归
    if (num > 10) {
        return "We've hit the end, my friends.";
    }
    // 打印当前乘法表项
    console.log(`${num} × ${multiplier} = ${num * multiplier}`);
    // 递归调用,将计数加1传递给下一次调用
    return recursionTable(multiplier, num + 1);
}

recursionTable(10);

递归的核心逻辑要记住三点:

  1. 明确终止条件:必须给函数一个停止递归的触发条件,这里当num超过10时就不再继续调用。
  2. 传递状态:把需要逐步变化的参数(比如这里的计数num)作为递归参数传递,而不是在函数内部重新初始化,这样才能实现从1到10的递进。
  3. 完成当前任务:每次递归先处理当前步骤的工作(打印当前乘法项),再触发下一次递归。

内容的提问来源于stack exchange,提问作者Jordy

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.06 07:31:07