アルゴリズムとプログラミング

基本情報技術者試験 科目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件中)。

この知識をアプリで解いて覚える レッスン「スタックとキュー(LIFO と FIFO)」で学ぶ

同じ知識の過去問