三つのスタック 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 する。 } }
ア. [1, 2, 3, 1, 2, 3]
f() は再帰呼び出しで A→C→B のデータ転送を行う。初期 A=[1,2,3] から: pop 3→push C、再帰、pop 2→push C、再帰、pop 1→push C、再帰でA空でreturn、C[1,2,3,3,2,1] から pop 1→B、戻って pop 2→B、戻って pop 3→B。B は元の [1,2,3] に 1,2,3 を順に追加して [1,2,3,1,2,3]。アが正解。
基本情報技術者試験 平成31年度 春期 午前 の過去問一覧へ戻る・問6