这段JavaScript递归函数reversed是否会引发无限循环?
这段递归函数是否会引发无限循环?
先看给出的代码片段:
const reversed = (x) => { if (x < 0) { return -1 * reversed(-x); } }
结论:当传入正数时,会触发无限循环
分析:
这段函数只处理了x为负数的情况:把负号剥离后递归调用函数。但当x为正数时,函数没有设置任何递归终止条件,也没有对应的处理逻辑——既没有返回值,也不会停止自身调用,会一直无限递归下去。
你提到的“x是常量”可以这么理解:函数每次接收的x是当前调用的入参,在当前调用上下文里它是固定值,给它加负号只会生成新的数值传入下一层递归,不会改变当前x的值。所以当最初传入的是正数时,每一层调用的x都是正数,永远触发不了x < 0的分支,也就没有终止的可能,最终导致无限循环。
内容的提问来源于stack exchange,提问作者AhmD RdN
相关产品推荐
相关产品推荐

