ハノイの塔の実装方法がわからず困っています。
https://p--q.blogspot.jp/2014/06/python13.html
のリンクの通りコードを書くと
# -*- coding: utf-8 -*- def hanoi(n, x, y, z): if n == 1: print("{}→{}".format(x, y)) else: hanoi(n-1, x, z, y) print("{}→{}".format(x, y)) hanoi(n-1, z, y, x) print(hanoi(3, "A", "C", "B"))
で、このファイルを実装すると
A→C A→B C→B A→C B→A B→C A→C
のように7回出力されます。
理解できないのが、なぜfor文やwhile文を使っていないのに
この場合、
else: hanoi(n-1, x, z, y) print("{}→{}".format(x, y)) hanoi(n-1, z, y, x)
が何回も呼ばれるのかということです。
http://www13.plala.or.jp/kymats/study/C++/Hanoi/Hanoi.html
のURLを見ると
#####
n-1 枚の円盤を棒Aから棒Bへ移動する場合と
棒Bから棒Aへ移動する場合は交互に訪れる。
#####
という部分を実装しているとは思うのですが、
このリンクのサイトの図の
■3枚の円盤を移動する手順
のどの部分が#####で囲った説明を表現しているのかもわかりません。
なぜ hanoiメソッドで表現されるシンプルなコードでハノイの塔が実装できるのでしょうか?
回答3件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
退会済みユーザー
2017/07/07 04:35
2017/07/07 05:41