修了試験 2018-12-09実施分 基本情報技術者試験 問8
プログラムの実行に関する次の記述の下線部a〜dのうち,いずれかに誤りがある。 誤りの箇所と正しい字句の適切な組合せはどれか。 自分自身を呼び出すことができるプログラムは,a再帰的であるという。 このようなプログラムを実行するときは,bスタックに局所変数,c仮引数及び戻り番地を格納して呼び出し,復帰するときはd FIFO(First In First Out)方式で格納したデータを取り出して復元する必要がある。
正答4
解説
正解は4です。 再帰呼出しの仕組みを説明した文章から、誤りの箇所と正しい字句を見つける問題です。 再帰的なプログラムは、呼び出すたびに局所変数、引数、戻り番地をスタックに積み、復帰するときは最後に積んだものから取り出します。 【選択肢別解説】 1:× 自分自身を呼び出せるプログラムは「再帰的(リカーシブ)」と呼ぶので、aは正しい記述です。 再入可能(リエントラント)は、複数のタスクから同時に呼び出されても正しく動く性質で、別の概念です。 2:× 局所変数や戻り番地を格納するのはスタックなので、bは正しい記述です。 待ち行列(キュー)は先に入れたものから取り出す構造で、再帰からの復帰の順序に合いません。 3:× 呼出しのたびに、呼ばれる側で使う仮引数の値を格納するので、cは正しい記述です。 実引数に直す必要はありません。 4:○ スタックは、最後に格納したデータを最初に取り出すLIFO(Last In First Out)方式です。 dのFIFO(First In First Out)は誤りで、LIFOが正しい字句です。 【ポイント】 再帰呼出しでは、最も新しい呼出しから順に戻るので、スタック(LIFO)が使われます。 「再帰的(リカーシブ)」「再入可能(リエントラント)」「再使用可能(リユーザブル)」「再配置可能(リロケータブル)」の違いも頻出です。まとめて解く
修了試験 2018-12-09実施分を通しで解く(80問)→