【问题标题】:const reversed = (x) => { if (x < 0) { return -1 * reversed(-x); } doesn't this recursive function make in infinite loop?const reversed = (x) => { if (x < 0) { return -1 * reversed(-x); } 这个递归函数不是无限循环吗?
【发布时间】:2023-02-04 03:57:43
【问题描述】:

因为 x 是常数,所以它是正的或负的。 因为我们正在检查 x 的值,它是常量,所以如果我们在它前面放一个负号也没关系。 所以它会导致无限循环,因为 x 仍然是正数。

【问题讨论】:

    标签: javascript recursion


    【解决方案1】:

    我将重写您的代码以提高可读性。

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

    如果我们用x &gt;= 0调用reversed,那么reversed返回undefined,因为在JS函数中隐式返回。 例如reversed(1) // --&gt; undefined

    如果是x &lt; 0,那么我们返回-1 * reversed(-x)x &lt; 0 -> -x &gt; 0。 我们已经知道用 x &gt;= 0 反向调用是 undefined,所以我们得到 -1 * undefined 结果是 NaN(不是数字)。

    TLDR:

    • x >= 0 -> reversed(x) -&gt; undefined
    • x < 0 -> reversed(x) -&gt; NaN

    【讨论】:

      猜你喜欢
      • 2021-08-18
      • 1970-01-01
      • 2019-03-16
      • 2018-08-07
      • 1970-01-01
      • 2012-11-04
      • 1970-01-01
      • 2012-07-05
      • 2012-06-03
      相关资源
      最近更新 更多