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():
条件是计算要解决的移动次数的失败尝试之一。无论如何,我在正确的轨道上?
另外,这个算法是否有效?或者有更好的方法来解决这个问题吗?
此外,有人能告诉我一些有用的河内塔和递归的优点?唯一能找出的就是它的简单性。
是的。但是当我再次运行它时,它会从之前的值开始计数。 :) – Tachyon 2013-02-24 15:03:04
你是对的:我更新了答案 – Don 2013-02-24 23:54:05