def printMove(source, destination):
print('move From ' + str(source) + ' to destination ' + str(destination))
count +=1
print count
def Towers(n, source, destination, spare):
if not count in locals():
count = 0
if n == 1:
printMove(source, destination)
count +=1
else:
Towers(n-1, source, spare, destination)
Towers(1, source, destination, spare)
Towers(n-1, spare, destination, source)
このスクリプトは、「ハノイの塔」を解決するために作成しました。スクリプトはうまく機能しますが、問題を解決するために必要な移動回数も印刷したいと思います。私は、カウントされるカウンターのようなものをどのように置くことができるかを理解することができません:
- 解決するのにかかる動きの数。
- 「タワー」機能が実行された回数。
このif not count in locals():
状態は、解決に必要な移動数のカウントに失敗した試みの1つです。とにかく私は正しい方向に進んでいますか?
また、このアルゴリズムは効率的ですか?それとも、これを解決するためのより良い方法はありますか?
さらに、誰かがハノイの塔のいくつかの有用なアプリケーションと再帰の利点を教えてもらえますか?私が理解できたのはその単純さだけでした。