河内的蟒蛇塔无尽的最后一招

时间:2015-05-20 08:39:45

标签: python

对于学校,我们必须制作河内塔的蟒蛇剧本。现在这不是很难,我知道怎么做但我想在其中做一个步骤。现在,我在下面的代码中做了它,它不会停止做最后一步。这导致它溢出输入。

你们可以看到它有什么问题,因为我无法理解它吗?

def hanoi(disk, start='START', end='END', middle='MIDDLE'):
    count = 0
    busy = "true"
    while busy == "true":
        if disk > 0:
            hanoi(disk - 1, start, middle, end)
            print('Move disk' + str(disk) + ' from ' + start + ' to ' + end)
            hanoi(disk - 1, middle, end, start)
            count = count + 1
        elif disk == 0:
            busy = "false"


        print (count)

if __name__ == '__main__':
    hanoi(int(input('How many disks you wanna play? ')))
在询问了我的老师后,我发现了问题:正确的代码如下:

count = 0

def increment():
    global count
    count = count+1

def hanoi(disk, start='START', end='END', middle='MIDDLE'):

    if disk > 0:
        hanoi(disk - 1, start, middle, end)
        print('Move disk' + str(disk) + ' from ' + start + ' to ' + end)
        increment()
        hanoi(disk - 1, middle, end, start)



if __name__ == '__main__':
    hanoi(int(input('How many disks you wanna play? ')))

print (count)

感谢大家的帮助。

1 个答案:

答案 0 :(得分:2)

让我们看看你写的功能。如果输入7,则hanoi(7)是执行以下操作的函数:

  1. 设置count = 0
  2. 初始化busy = True
  3. 调用一个函数调用,该函数调用应该说明如何将前6个磁盘移动到另一个peg上
  4. 说出如何移动最大的磁盘
  5. 调用应该说明如何将前6个磁盘移动到最大磁盘上的函数调用
  6. 增量count
  7. 打印count(第一次到达此步骤时为1
  8. 返回第3步
  9. 你看到了问题吗?