SC情報処理安全確保支援士試験 午前Ⅰ

平成30年度春期 情報処理安全確保支援士 午前Ⅰ 問3

問題文と選択肢を読んで答えを考えてから、下の「正解と解説を見る」で確認しましょう。

問題

再帰的な処理を実現するためには、 再帰的に呼び出したときのレジスタ及びメモリの内容を保存しておく必要がある。そのための記憶管理方式はどれか。

選択肢

  1. ア
    FIFO
  2. イ
    LFU
  3. ウ
    LIFO
  4. エ
    LRUー3一
解き方のヒントを見る

再帰呼出しは“積み重ねた皿”みたいに戻るよ

再帰処理では、関数を呼び出すたびに「どこまで進んでいたか」という情報を上に積み重ねて保存するよ。そして戻るときは、最後に呼び出したものから順番に片付ける。これは、最後に置いた皿から取るスタックの後入れ先出し(LIFO)と同じ考え方だよ。

この問題で問われていること

ポイントは、再帰の呼出し情報を保存する仕組みがスタックであることを見抜くことだよ。先に入れたものから出すFIFOや、最近使っていないものを追い出すLRUとは別物として区別しよう。

Call Stack

recursive calls push and pop activation records in last-in first-out order

save on call\nrestore on return\nLIFO

確認ポイント

  • 再帰はスタックで管理する。
  • 最後に呼んだものから戻る。
  • LIFO を選ぶ。
正解と解説を見る

正解

ウ

出典

問題文と解答は IPA 公開の過去問題冊子・解答例を基にしています。

選択肢ア

FIFOは「先に入れたものを先に出す」方式だよ。銀行の窓口で先に並んだ人から呼ばれるイメージだね。再帰処理では、最後に呼び出した処理から順番に戻らないといけないので、FIFOだと戻る順番が逆になってしまうよ。だから不正解だよ。

選択肢イ

LFUは「使われた回数が少ないものを先に追い出す」考え方だよ。例えば、あまり借りられない本を棚から外すようなイメージだね。再帰処理で必要なのは“何回使ったか”ではなく、“最後に呼び出した処理から先に戻ること”なので、LFUは目的が違うよ。だから不正解だよ。

選択肢ウ(正解)

LIFOは「後から入れたものを先に出す」方式だよ。積み上げた皿を上から取るイメージだね。再帰処理では、AがBを呼び、BがCを呼んだら、戻るときはC、B、Aの順になるよ。最後に呼び出した処理から戻るので、LIFOがぴったり。これが正解だよ。

選択肢エ

LRUは「最近使われていないものを先に追い出す」方式だよ。しばらく使っていない合鍵を整理するようなイメージだね。これはキャッシュやページ置換でよく使う考え方で、再帰処理の“最後に呼び出したものから戻る”仕組みとは別物だよ。だから不正解だよ。

出典:独立行政法人 情報処理推進機構(IPA)平成30年度春期 情報処理安全確保支援士試験 午前Ⅰ 問3(公式資料:問題冊子(PDF) / 解答例)

関連する過去問一覧

IPA Advancedは非公式の学習サイトです。解説にはAIによる補助生成を含む場合があります。公式の問題冊子・解答例・採点講評を優先し、誤りは確認後に訂正します。運営・編集方針