スポンサーリンク

問題の解答・解説ページ

このページは解説の閲覧モードです。
実力試しをしたい方は、下のボタンからクイズに挑戦してください!

この問題をクイズ形式で解く
問題 No.2092
再帰呼び出しの関数の内部において、自分自身を呼び出す処理がその関数の最後に行われるように記述されたものを指す用語はどれか。

【正解の解説】

末尾再帰呼び出し

これは伝言ゲームで、聞いた内容を次の人にすぐそのまま伝えて自分の仕事が即座に終わるような状態です。通常の再帰だと前の人の記憶をずっと頭の中に保持し続ける必要がありますが、末尾再帰なら「最後の仕事だからメモはもういらないや」と記憶をリセットできるため、パソコンのメモリを節約できるという強力なメリットがあります。

スポンサーリンク

【その他の選択肢の解説】

相互再帰呼び出し

問題文にある「自分自身を呼び出す」のではなく、「別の関数を挟んでループを作る」点が決定的な違いです。例えばA君がB君にボールを投げ、B君がそれをA君に投げ返すキャッチボールのような関係であり、1つの関数内で完結する末尾再帰とは構造が異なります。

多重再帰呼び出し

フィボナッチ数列の計算などが代表例で、1つの問題から次々と新しい問題が分裂して生まれるため、まるで木の枝がどんどん広がっていくようなイメージになります。最後の行だけで自分自身を呼び出してスッキリ終わる末尾再帰とは異なり、計算が爆発的に増えやすいのが特徴です。

無限再帰呼び出し

出口のない無限ループに陥るため、最終的にはパソコンのメモリが限界を迎えてエラー(スタックオーバーフロー)で強制終了します。書き方の工夫である「末尾再帰」とは異なり、単にバグを含んだ危険な状態を指すため、初学者が陥りやすい「動かないプログラムの代表例」としてよく出題されます。