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

平成31年度 春期 基本情報技術者試験 午前 問6

三つのスタック 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 する。 } }
答えを選ぶ

出典:平成31年度 春期 基本情報技術者試験 午前 問6(問題文は IPA の公開問題。解説は当サイト作成)

答えと解説を見る

正解:ア

覚える知識

再帰関数のトレース計算

再帰呼出しは呼出しの後の処理が逆順(後入れ先出し)で実行される。

この問題で必要なこと

再帰で下りる際にAからCへ3,2,1の順に移し、戻る際にCから1,2,3の順にBへ移るため、Bは[1,2,3,1,2,3]になる。

ひっかけ

移し替えの順序の逆転を考え、逆順の並びを選ばせる。

この知識の出題:本試験系 8 回・免除試験 11 回(公開問題での観測値)

この知識をアプリで解いて覚える レッスン「再帰呼出しと引数の渡し方」で学ぶ

同じ知識の過去問