問題 No.2571
複数の関数が互いに相手を呼び出し合うことによって、結果的に自分自身を呼び出す構造となる再帰呼び出しの方式を指す用語はどれか。
【正解の解説】
相互再帰呼び出し
これはA君がB君にボールを投げ、B君がそれをC君にパスし、最終的にC君がA君にボールを投げ返すような、複数人でパス回しをする状態に似ています。自分一人で完結せず、仲間を経由して巡り巡って自分のところに戻ってくるような複雑な関数の連携プレイを指しています。
スポンサーリンク
【その他の選択肢の解説】
直接再帰呼び出し
これは鏡に向かって「おや?」と言ったら、その鏡の中の自分がそのまま「おや?」と即座に言い返すような、一対一の直接的なループ状態を指します。友達を経由する「相互」ではなく、自分一人だけで完結している点が決定的な違いです。
多重再帰呼び出し
これは親が自分の子供を一人ではなく何人も同時に生み出すような、枝分かれがどんどん増えていく構造をイメージしてください。関数が複数の自分を同時に呼び出して処理を複雑に分岐させる点が、複数の関数が連携する相互再帰との違いです。
末尾再帰呼び出し
これは階段を駆け下りるときに、次に進む足場だけを確認しながら一気に下まで降り切るような無駄のない動きに似ています。メモリの消費を抑えるためのプログラミング上の工夫であり、複数関数がループし合う関係性を示す用語ではありません。