2017-08-06 18 views
0

次の再帰関数では、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, [])) 
+0

かなり明確です。明示的に値を返さない関数は 'undefined'を返します。 – undefined

答えて

2

あなたが機能でreturn文を実行しない場合、戻り値はundefinedになります。

値を返すためには、returnステートメントが必要です。

条件が満たされた場合、返す値があるので、returnです。

条件が満たされない場合は、関数を再帰的に呼び出す必要があり、その結果をreturnにする必要があります。

関連する問題