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

基本情報技術者試験次の擬似言語は、n 枚の円盤を 3 本の杭を使って移す「ハノイの塔」で、1 枚を動かすたびに move を 1…

アルゴリズムとプログラミングアルゴリズムとプログラミング計算問題難易度:hard
次の擬似言語は、n 枚の円盤を 3 本の杭を使って移す「ハノイの塔」で、1 枚を動かすたびに move を 1 回呼ぶ。hanoi(6, A, C, B) を実行したとき、move が呼ばれる総回数はどれか。
○手続: hanoi(整数型: n, 杭: from, 杭: to, 杭: via)
  if (n が 0 と等しい)
    return
  endif
  hanoi(n - 1, from, via, to)
  move(from, to)
  hanoi(n - 1, via, to, from)
32 回
36 回
63 回
64 回
正解
ウ.63 回

ハノイの塔の移動回数 T(n) は T(n)=2·T(n-1)+1、T(0)=0 を満たし、解くと T(n)=2 の n 乗 − 1 である。n=6 で 2 の 6 乗 − 1 = 63 回となるため ウが正しい。

?選択肢ごとの解説

ア ×2 の 5 乗 = 32 であり、n を 5 と取り違える、または −1 と指数を同時に誤った誤りである。
イ ×6×6=36 のように n を二乗するなどして、指数関数的な増加を多項式と取り違えた誤りである。
ウ ○ハノイの塔の移動回数 T(n) は T(n)=2·T(n-1)+1、T(0)=0 を満たし、解くと T(n)=2 の n 乗 − 1 である。n=6 で 2 の 6 乗 − 1 = 63 回となるため ウが正しい。
エ ×2 の 6 乗 = 64 であり、最後の −1(基底 T(0)=0 による補正)を忘れた off-by-one の誤りである。
この問題の「深掘り・誤答の完全解説・覚え方」は、登録すると読めます。

基本情報技術者試験は全4,036問。公開しているのはその一部で、登録すると残りも一問ごとにAI解説つきで解けます。SRS暗記カード・全真模試・弱点診断まで。

登録は1分・クレジットカード不要。無料のまま練習・暗記カード・模試まで使えます。

作成・校閲:ukamiru編集部 · 基本情報技術者試験 過去問 · fe-b-algo-0043

【基本情報技術者試験】次の擬似言語は、n 枚の円盤を 3…|正解「63 回」|ukamiru 過去問