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)
我写了这个脚本来解决“河内塔”。该脚本运行良好,但我还想打印解决问题所需的移动次数。我只是无法弄清楚如何放置一种可以计数的计数器:
- 解决所需的移动次数。
- “Towers”函数执行的次数。
if not count in locals():
条件是计算将要解决的移动次数的失败尝试之一。反正我是在正确的轨道上吗?
另外,这个算法有效吗?或者有没有更好的方法来解决这个问题?
此外,有人能告诉我河内塔的一些有用应用和递归的优势吗?我唯一能想到的是它的简单性。