アルゴリズムとプログラミング
基本情報技術者試験 科目A免除 修了試験 20210725 実施分 問8
三つのスタック A, B, C のいずれの初期状態も [1, 2, 3] であるとき,再帰的に定義された関数 f( ) を呼び出して終了した後の B の状態はどれか。ここで,スタックが [a1, a2, …, an-1] の状態のときに an を push した後のスタックの状態は [a1, a2, …, an-1, an] で表す。
f( ){
A が空ならば{
何もしない。
}
そうでない場合{
A から pop した値を C に push する。
f( ) を呼び出す。
C から pop した値を B に push する。
}
}
f( ){
A が空ならば{
何もしない。
}
そうでない場合{
A から pop した値を C に push する。
f( ) を呼び出す。
C から pop した値を B に push する。
}
}
答えを選ぶ
出典:基本情報技術者試験 科目A免除 修了試験 20210725 実施分 問8(問題文は IPA の公開問題。解説は当サイト作成)
解説に誤りを見つけたら、解説の誤りを報告してください。
答えと解説を見る
正解:ア
覚える知識
スタックのpush/popトレース
スタックは後入れ先出しで、push した順の逆に pop される。
この問題で必要なこと
再帰で A の 3,2,1 を順に pop して C に push した後、戻りで C から 1,2,3 を順に pop して B に push するので B は [1,2,3,1,2,3]。
ひっかけ
B の初期状態 [1,2,3] が残ることを忘れる、または C から取り出す順を逆にする誤り。
この知識の出題:本試験系 5 回・免除試験 4 回(公開問題での観測値)。頻出知識ランキング87位(全1,254件中)。