我是 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)
最佳答案
递归算法需要一个终止条件,它通常代表算法的最简单情况。对于汉诺塔,最简单的情况是当要移动的磁盘为零时,什么都不做。
在 Python 中,“错误”的一个条件是任何数字版本为零,因此从技术上讲,如果有人将负数传递给您的算法,它将失败,因此最好检查 if ndisks > 0
。这会在 ndisks==0 时停止递归。
如果要移动的磁盘数为正数 (n),则递归算法为:
以上描述了代码的其余部分,最终条件是零磁盘。
关于python - 汉诺塔解说,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/15214998/