【发布时间】:2023-02-04 03:57:43
【问题描述】:
因为 x 是常数,所以它是正的或负的。 因为我们正在检查 x 的值,它是常量,所以如果我们在它前面放一个负号也没关系。 所以它会导致无限循环,因为 x 仍然是正数。
【问题讨论】:
标签: javascript recursion
因为 x 是常数,所以它是正的或负的。 因为我们正在检查 x 的值,它是常量,所以如果我们在它前面放一个负号也没关系。 所以它会导致无限循环,因为 x 仍然是正数。
【问题讨论】:
标签: javascript recursion
我将重写您的代码以提高可读性。
const reversed = (x) => {
if (x < 0) {
return -1 * reversed(-x);
}
}
如果我们用x >= 0调用reversed,那么reversed返回undefined,因为在JS函数中隐式返回。
例如reversed(1) // --> undefined
如果是x < 0,那么我们返回-1 * reversed(-x)。 x < 0 -> -x > 0。
我们已经知道用 x >= 0 反向调用是 undefined,所以我们得到 -1 * undefined 结果是 NaN(不是数字)。
TLDR:
reversed(x) -> undefined
reversed(x) -> NaN
【讨论】: