次の再帰関数では、return
をどのようにしてprintArr
の前に使用する必要があるかに注意してください。 return
を使用せず、ただprintArr(num-1, [...arr, num]
を実行すると、再帰関数の戻り値はundefined
になります。関数呼び出しを再帰的に返す - 理論リターンステートメント
GoogleとStackOverflowでこの特定のトピックの説明を検索しましたが、回答が見つかりませんでした。誰かが関数への再帰呼び出しを行うときになぜreturn
を使用する必要があるのかを説明してもらえますか、私が見逃したかもしれないStackOverflow質問またはブログ投稿に私を導くことさえできますか?
コールスタックと何か関係があるかもしれないと思いますが、概念的には私の頭を包み込むのは難しいです。 JavaScriptで
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