河内塔解说

2024-05-18 11:40:55 发布

您现在位置:Python中文网/ 问答频道 /正文

我是python的初学者,想知道if语句在这个Hanoi Towers函数中的作用是什么:

def hanoi(ndisks, startPeg=1, endPeg=3):
    if ndisks:
        hanoi(ndisks-1, startPeg, 6-startPeg-endPeg)
        print "Move disk %d from peg %d to peg %d" % (ndisks, startPeg, endPeg)
        hanoi(ndisks-1, 6-startPeg-endPeg, endPeg)

hanoi(ndisks=4)

Tags: 函数moveifdef语句diskprint初学者
1条回答
网友
1楼 · 发布于 2024-05-18 11:40:55

递归算法需要一个终端条件,它通常代表算法的最简单情况。对于河内的塔楼来说,最简单的情况是当没有磁盘可移动时,不要做任何事情。在

在Python中,“false”的一个条件是零的任何数字版本,因此从技术上讲,如果有人向您的算法传递一个负数,那么最好检查一下if ndisks > 0。当ndisks==0时,这将停止递归。在

如果要移动的磁盘数为正数(n),则递归算法为:

  1. 将n-1个磁盘从起始标记移到“其他”标记。在
  2. 将第n个个磁盘从开始位置移动到结束位置。在
  3. 将n-1个圆盘从“其他”销钉移动到末端销钉。在

上面描述了其余的代码,终端条件是零磁盘。在

相关问题 更多 >