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

这段JavaScript递归函数reversed是否会引发无限循环?

这段递归函数是否会引发无限循环?

先看给出的代码片段:

const reversed = (x) => { 
  if (x < 0) { 
    return -1 * reversed(-x); 
  }
}

结论:当传入正数时,会触发无限循环

分析:

这段函数只处理了x为负数的情况:把负号剥离后递归调用函数。但当x为正数时,函数没有设置任何递归终止条件,也没有对应的处理逻辑——既没有返回值,也不会停止自身调用,会一直无限递归下去。

你提到的“x是常量”可以这么理解:函数每次接收的x是当前调用的入参,在当前调用上下文里它是固定值,给它加负号只会生成新的数值传入下一层递归,不会改变当前x的值。所以当最初传入的是正数时,每一层调用的x都是正数,永远触发不了x < 0的分支,也就没有终止的可能,最终导致无限循环。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.02 15:15:32