诡异的js递归问题

话不多说先上代码

function __FIND_UP_NUM(i) {
        upNum = i
        if (i === 0) {
          return 0
        } else {
          if (i != 0) {
            __FIND_UP_NUM(i - 1)
          } else {
            return upNum * 1 - 1
          }
        }
      }
      __FIND_UP_NUM(2)

诡异的问题描述: 上述函数作因传入的值为2 因此会进入递归再次调用自己本身 通过调试器调试当递归传入值为0的时候确实也能进入到相应判断 期待代码应该返回的值是0 但是实际返回的确实 undefined 实在想不明白 请高手帮忙看下 谢谢啦

阅读 1.8k
2 个回答

image.png

这个修改后的代码肯定是个递归,但是返回的永远是 0


function findUpNumber(i) {
    if (i === 0) {
        return 0;
    }
    return findUpNumber(i - 1);
}
          if (i != 0) {
            __FIND_UP_NUM(i - 1)
          }

这里需要一个 return

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题