javascript - 递归返回函数调用——理论re return语句

标签 javascript recursion

在下面的递归函数中,请注意我们必须如何使用 return之前printArr 。如果我们不使用return ,然后做 printArr(num-1, [...arr, num] ,递归函数的返回值为undefined

我在 Google 和 StackOverflow 上搜索了此特定主题的解释,但找不到答案。有人可以解释一下为什么我们需要使用 return当对函数进行递归调用时,甚至将我定向到我可能错过的 StackOverflow 问题或博客文章。

我认为这可能与调用堆栈有关,但从概念上讲,我很难理解它。

const printArr = (num, arr) => {
  if (!num)
    return arr

  return printArr(num - 1, [...arr, num])
}

const printArr2 = (num, arr) => {
  if (!num)
    return arr

  printArr(num - 1, [...arr, num])
}

// [10, 9, 8, 7, 6, 5, 4, 3, 2, 1]
console.log(printArr(10, [])) 

// undefined
console.log(printArr2(10, []))

最佳答案

在 JavaScript 中,如果您不在函数中执行 return 语句,则返回值将为 undefined

由于您想要返回一个值,因此需要一个 return 语句。

如果满足条件,那么您就有了想要返回的值,因此您返回该值。

如果不满足条件,则需要递归调用该函数并返回结果。

关于javascript - 递归返回函数调用——理论re return语句,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45536750/

相关文章:

javascript - 带有定时器的淡入淡出效果?

c - 这段代码给出了一个荒谬的答案

c - C 中的递归斐波那契,使用 fork()

javascript - 给定某些节点的所有可能路线,返回起始节点

angular - 如何以 react 形式退出递归调用 valueChanges

javascript - 修改以下正则表达式以在 URL 末尾包含一个斜杠

javascript - 如何使用Javascript SDK V2.0获取Facebook用户好友头像

javascript - 使用 Tab 的 AngularJS 多页表单

javascript - Jquery:input type=submit 即使在禁用时仍然提交

c - 在带有 while 循环的 C 中使用递归函数的阶乘程序 c