Programming]プログラムの再帰呼び出しについてまとめてみました。ここではJavaScriptを使って説明します。1.はじめにプログラムの「再帰呼び出し」とは、関数が実行されたときにその内部から自分自身をさらに呼び出すというテクニックです。再帰呼び出しは冗長なコードを作り込まないための重要なテクニックですが、ビギナーの方にとっては理解が難しいと思われます。再帰呼び出しについてネットで検索すると多くのページがヒットしますが、個人的に分かりやすいと思ったページがほとんどありませんでした(すいません)。このエントリーも分かりやすいかどうかわかりませんが、階乗処理(5!=5×4×3×2×1=120)のサンプルを使って再帰呼び出しの流れやポイントなどを説明したいと思います。2.サンプル説明で使う再帰呼び出しプログラムのサンプルは下記です。);動作は、recursive()という関数のパラメータに「5」を与えて実行すると、1×2×3×4×5という計算を行い、120という結果をコンソールに出力します(厳密には1×1→2×1→3×2→6×4→24×5という計算をします)。ちなみにこのコードは次の4行でも実現できますが、理解を容易にするために冒頭のようにしています。);3.解説プログラムの解説ですが、理解を容易にするためにとりあえず再帰呼び出し関数をすべて別関数にしてみました(かえってわかりにくかったらすいません)。);このプログラムの実行される行と順番は次のとおりです。関数のコード前半(再帰呼び出しの直前)が先に実行される関数のコード後半(再帰呼び出しの直後)が後で実行されるなどが挙げられると思います。冒頭のサンプルプログラムに戻って解説すると、まずパラメータで与えた変数numberが0になるまで再帰呼び出しを繰り返して、赤色の部分を繰り返し処理し、numberをデクリメントします。result;}console.log(recursive(5));最後の再帰呼び出しで変数numberが0になるので1を返却します。階乗処理でこの1の返却が必要になります。result;}console.log(recursive(5));そして、計算と呼び出し元への戻し値の返却が、呼び出された回数分繰り返し行われます。result;}console.log(recursive(5));具体的な計算値と返却値は次のとおりです。図も作ったので参考になれば幸いです。アイコンクリックで最大化)4.サンプル2もう少し分かりやすい例で、HTMLのul/li要素を入れ子で出力するには次のようにします。document.write("</li></ul>");}recursive(5);実行すると次のHTMLを出力します。</li></ul>以上です。認識誤り等ありましたらどこかでつぶやいてください。*必須(非表示)URL(U):情報を保存する?コメントへの返信ご質問のコメントの回答については、内容あるいは多忙の場合、1週間以上かかる場合があります。すべてのご質問にはお答えできない可能性があります。Errorや500エラーが表示された場合は、すぐに再送信せず、ブラウザの「戻る」ボタンで一旦エントリーのページに戻り(プレビュー画面で投稿した場合は、投稿内容をマウスコピーしてからエントリーのページに戻り)、ブラウザをリロードして投稿コメントが反映されていることを確認してください。コメント欄に(X)HTMLタグやMTタグを記述される場合、「<」は「&lt;」、「>」は「&gt;」と入力してください。