スポンサーリンク

問題の解答・解説ページ

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

この問題をクイズ形式で解く
問題 No.2036
ある関数が実行中に自分自身を呼び出す際、直接的な呼び出しではなく、別の関数を介して間接的に自分自身を呼び出す仕組みを指す用語はどれか。

【正解の解説】

間接再帰呼び出し

AさんがBさんに伝言を頼み、そのBさんが巡り巡ってまたAさんに用事を頼むような状況です。直接本人に話すのではなく、誰かワンクッション置いてから自分に戻ってくるため、プログラムの世界では「間接」という言葉が使われます。複数人がグルになって処理を回す複雑なアルゴリズムでよく見られる手法です。

スポンサーリンク

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

直接再帰呼び出し

初学者が最もイメージしやすい王道の再帰であり、鏡に向かって「おーい」と叫ぶとそのまま自分が返事をするようなシンプルな構造です。問題文にある「別の関数を介して」というワンクッションの動作が含まれていないため、直接再帰と間接再帰は明確に区別して覚える必要があります。

末尾再帰呼び出し

末尾再帰は、処理の最後に自分を呼ぶことで、コンピュータの記憶領域をムダに消費しないように賢くスリム化するテクニックです。呼び出し方に着目した「間接・直接」という分類軸とは別の、「効率の良い書き方」という観点の用語であるため、問題文の条件とはピントがずれてしまいます。

相互再帰呼び出し

相互再帰は間接再帰の仲間と言えますが、2つ以上の関数がキャッチボールのように交互に呼び合う関係性を強調した呼び方です。問題文が求める「自分自身を呼び出す」という全体像を指す用語としては、より広い意味を持つ間接再帰が適切であり、試験ではこの微妙なニュアンスの違いでひっかけ問題として出題されやすいので注意しましょう。