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

递归函数报Maximum call stack size exceeded错误的原因求解

问题根因
  • 核心错误点是myFunc2中后自增运算符counter++的使用逻辑:counter++属于后自增,执行时会先返回变量的当前值,再对变量本身做+1运算。
  • 你调用myFunc1(counter++)时,实际传递给myFunc1的永远是自增前的原值,counter的有效值始终没有变化,导致myFunc1和myFunc2无限互相调用,最终触发Maximum call stack size exceeded调用栈溢出错误。
  • 另外你预期counter等于4时停止运行,但当前myFunc1的判断条件为counter < 5,即使自增逻辑修复,也会到counter等于5才停止,和你的预期不符。
修复方法

把counter++替换为前自增运算符++counter,或者直接传递counter + 1即可解决无限递归问题:

myFunc2 = (counter) => {
    // 两种写法二选一都可以
    // myFunc1(++counter)
    myFunc1(counter + 1)
}

如果要匹配“counter为4时停止”的预期,同步修改myFunc1的判断条件:

myFunc1 = (counter) => {
    if(counter < 4) {
      myFunc2(counter);
  }
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 00:06:02