IPA過去問ドリル

平成27年度 春期 応用情報技術者試験 午前 問7

テクノロジ/アルゴリズム

プログラムの実行に関する次の記述の下線部a~dのうち,いずれかに誤りがある。誤りの箇所と正しい字句の適切な組合せはどれか。 自分自身を呼び出すことができるプログラムは,a.再帰的であるという。このようなプログラムを実行するときは,b.スタックに局所変数,c.仮引数及び戻り番地を格納して呼び出し,復帰するときはd.FIFO(First In First Out)方式で格納したデータを取り出して復元する必要がある。

出典:平成27年度 春期 応用情報技術者試験 午前 問7

正解:エ

解説

自分自身を呼び出せるプログラムは再帰的であるといい,再帰呼出しの実行時にはスタックに局所変数・仮引数・戻り番地を格納して呼び出し,復帰時には最後に積んだデータから順に取り出すLIFO(Last In First Out)方式で復元します。下線部dのFIFOは誤りで,正しくはLIFOです。

選択肢ごとの解説

  • 誤り。下線部aの「再帰的」という記述に誤りはありません。自分自身を呼び出せる性質を再帰的といい,複数のタスクから同時に呼び出されても正しく動作する性質を指す「再入可能」とは別の概念です。誤りは下線部dです。
  • 誤り。下線部bの「スタック」という記述に誤りはありません。再帰呼出しの情報はLIFO構造のスタックに格納され,順序制御のための待ち行列(FIFO構造)ではありません。誤りは下線部dです。
  • 誤り。下線部cの「仮引数」という記述に誤りはありません。呼出し時にはスタックに局所変数,仮引数の領域及び戻り番地が確保・格納されます。誤りは下線部dです。
  • 正しい。復帰時にはスタックに格納したデータを後入れ先出し(LIFO:Last In First Out)で取り出す必要があり,下線部dのFIFOは誤りです。
応用情報技術者の過去問を演習モードで解く