三つのスタックA,B,Cのいずれの初期状態も[1,2,3]であるとき,再帰的に定義された関数ƒ()を呼び出して終了した後のBの状態はどれか。
ここでスタックが
の状態のときに
をpushした後のスタックの状態は
で表す。
ƒ(){
Aが空ならば {
何もしない
} そうでない場合 {
Aからpopした値をCにpushする。
ƒ()を呼び出す
Cからpopした値をBにpushする
}
}
Aが空ならば {
何もしない
} そうでない場合 {
Aからpopした値をCにpushする。
ƒ()を呼び出す
Cからpopした値をBにpushする
}
}
×不正解です
問題文はややこしいですが、プログラミング通りにやっていけば楽に解くことができます。
- Aは空ではないので、Aからpopした値をCにpushします
- Aからpopする値は最後尾の3です
- A[1, 2] C[1, 2, 3, 3]
- Aは空ではないので、Aからpopした値をCにpushします
- Aからpopする値は最後尾の2です
- A[1] C[1, 2, 3, 3, 2]
- Aは空ではないので、Aからpopした値をCにpushします
- Aからpopする値は最後尾(最後)の1です
- A[] C[1, 2, 3, 3, 2, 1]
- Aが空なのでƒ()を抜けます
- Cからpopした値をBにpushする
- C[1, 2, 3, 3, 2] B[1, 2, 3, 1]
プログラムはこれで終了なので、実際、問題文のように解くと
B[1, 2, 3, 1]
こちらが答えになりますが、どうやらIPA側のミスのようです。
1, 2, 3, 1に近い選択肢は1, 2, 3, 1, 2, 3なのでアが正解ということにしておきましょう。
回答数 1
正解率 0%