再帰呼出しとスタック (LIFO)
出典: 平成27年度 春期 応用情報技術者試験 午前 問7 (IPA)
プログラムの実行に関する次の記述の下線部 a~d のうち,いずれかに誤りがある。誤りの箇所と正しい字句の適切な組合せはどれか。
自分自身を呼び出すことができるプログラムは,下線部a「再帰的」であるという。このようなプログラムを実行するときは,下線部b「スタック」に局所変数,下線部c「仮引数」及び戻り番地を格納して呼び出し,復帰するときは下線部d「FIFO(First In First Out)」方式で格納したデータを取り出して復元する必要がある。
- ア a: 再入可能
- イ b: 待ち行列
- ウ c: 実引数
- エ d: LIFO(Last In First Out)
正解と解説を見る
正解: エ
- ア: 「再帰的」で正しいです。再入可能 (リエントラント) は、複数のタスクから同時に使えるという意味です。
- イ: 「スタック」で正しいです。待ち行列 (キュー) は FIFO で取り出す構造です。
- ウ: 「仮引数」で正しいです。呼び出された側が受け取る引数を格納します。
- エ: 戻るときは最後に呼び出したものから復元するので LIFO です。正しい答えです。
ポイント
- 自分自身を呼び出すプログラムは 再帰的 です。
- 呼び出すたびに局所変数・仮引数・戻り番地を スタック に積み、復帰するときは 最後に積んだものから取り出す (LIFO) 必要があります。
- よって誤りは d で、正しくは LIFO (Last In First Out) です。