0
在下面的遞歸函數中,注意我們必須在printArr
之前使用return
。如果我們不使用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, []))
這很清楚。一個不顯式返回值的函數返回'undefined'。 – undefined