下面是我为河内塔问题编写的Python代码,其中塔必须从左桩转移到中间桩,使用右桩作为备用桩:
def hanoi(n, origin = "1", destination = "2", spare = "3"):
if n == 1:
print ("Move disk from", origin, "to", destination)
else:
hanoi(n-1, origin, spare, destination)
hanoi(1, origin, destination, spare)
hanoi(n-1, spare, destination, origin)
hanoi(3)
现在,我的教授希望我用一种方法来实施它,即法律行动只从1号塔移到2号塔,2号塔到3号塔,3号塔到1号塔。所有其他规则都是一样的。在
和往常一样,你需要归纳地思考。从最小的可能移动的塔开始,然后问自己:如果我能做到,我怎么能移动一个更大的塔?在
由于移动1号塔很简单,让我们从2号塔开始:
基本情况
向右移动一个2号一号木桩的塔:
这演示了如何将塔向右移动一个木桩。当然,这也可以用来将塔从第二根移到第三根,或者从第三根移到第一根桩。在
台阶
假设您知道如何将一个大小为n的塔向右移动一个挂钩,下面是如何对n+1磁盘执行此操作:
^{pr2}$相关问题 更多 >
编程相关推荐