javascript のコードが理解できません。プログラミング初心者です。 function countup(n) { ・・if (n < 1) { ・・・・return []; ・・} else { ・・・・const countArray = countup(n - 1); ・・・・countArray.push(n); ・・・・return countArray; ・・} } console.log(countup(5)); → [1, 2, 3, 4, 5] まず ・・if (n < 1) { ・・・・return []; のreturn[] ですが、これは空の配列をn<1になった時に返すという事だと思うんですが、なぜわざわざ空の[]を返す必要があるのか、returnだけではダメなのかが分かりません。(試しに[]を消してみましたがエラーになりました) 次に const countArray = countup(n - 1); countArray.push(n); の部分で、先に空の配列を作ったわけでもないのになぜ出力が配列様式になるのか。上の ・・if (n < 1) { ・・・・return [] はfalseなので飛ばされるはずだし、どこで配列の処理になるのか分かりません。 .pushが配列に使われるものだから配列になるという事でしょうか。 先に空の[]を作ってそこに足していく方がいいんじゃないかと思い、試してみましたが、私の知識、能力ではコードが書けませんでした。 countup(n - 1)となっているので5,4,3と減っていきそうですが、出力は1,2,3です。 これはcountup(n - 1)が先に実行(5,4,3,2,1)され、逆の順番で(最後に終わったのものから)そのループから抜け、1,2,3,4,5とpushされていくという事でしょうか。 countup(n - 1)の後ろにreturnを書いて、pushをどこか別の所で一つ手前の列(タブ)から書いておけば順番通りに5,4,3,2,1となる?とか色々考えています。 よろしくお願いします。
JavaScript