我是python的初学者,想知道if
语句在这个河内塔功能中的作用:
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)
答案 0 :(得分:4)
递归算法需要终端条件,这通常代表算法的最简单情况。对于河内塔来说,最简单的情况是当零磁盘移动时,不要做任何事情。
在Python中,有一个" falseness"是零的任何数字版本,所以从技术上讲,如果有人向您的算法传递负数,它将失败,因此最好检查if ndisks > 0
。当ndisks == 0时,这会停止递归。
如果要移动的正数(n)个磁盘,则递归算法为:
上面介绍了其余代码,终端条件为零磁盘。