我在 python 中为“河内之塔”编写了一个代码,我正在尝试添加一个计数器来显示它运行了多少次。我尝试了几种方法,例如 while 循环和 for 循环等,但它不起作用。我确信答案很简单,但我的大脑现在正在最低设置下运行。我的代码如下所示:
def Hanoi(n, src, dst, tmp):
if n > 0:
Hanoi(n - 1, src, tmp, dst)
print "Move disc", chr(64 + n), "From tower", src, "to tower", dst
Hanoi(n - 1, tmp, dst, src)
Hanoi(4,0,2,1) #Just an example
我知道代码必须运行 (2^n)-1 次,但我无法实现它。因为我编写代码的方式,值 n 发生了变化,所以这对我有用。(我尝试过这样的事情:
def Hanoi(n, src, dst, tmp):
a = 0
while (a < (2**n)-1)
a+=1
if n > 0:
Hanoi(n - 1, src, tmp, dst)
print a, "Move disc", chr(64 + n), "From tower", src, "to tower", dst
Hanoi(n - 1, tmp, dst, src)
但正如我所说,值 n 改变了,我不知道如何解决它。
编辑:
为了澄清,我希望它像这样购买步骤数:(如果我打电话给 Hanoi(3,0,2,1))
1. Move disc A From tower 0 to tower 2
2. Move disc B From tower 0 to tower 1
3. Move disc A From tower 2 to tower 1
4. Move disc C From tower 0 to tower 2
5. Move disc A From tower 1 to tower 0
6. Move disc B From tower 1 to tower 2
7. Move disc A From tower 0 to tower 2