单向塔循环建议?

2024-10-01 00:19:45 发布

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

下面是我为河内塔问题编写的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号塔。所有其他规则都是一样的。在


Tags: to代码frommoveifdefspareorigin
1条回答
网友
1楼 · 发布于 2024-10-01 00:19:45

和往常一样,你需要归纳地思考。从最小的可能移动的塔开始,然后问自己:如果我能做到,我怎么能移动一个更大的塔?在

由于移动1号塔很简单,让我们从2号塔开始:

基本情况

向右移动一个2号一号木桩的塔:

|  -  |     |     |
|  - |     |     |
         -
Step 1:

|     |     |     |   
|  - |  -  |     |
         -
Step 2:

|     |     |     |
|  - |     |  -  |
         -
Step 3:

|     |     |     |
|     |  - |  -  |
         -
Step 4:

|     |     |     |
|  -  |  - |     |
         -
Step 5:

|     |  -  |     |
|     |  - |     |
         -

这演示了如何将塔向右移动一个木桩。当然,这也可以用来将塔从第二根移到第三根,或者从第三根移到第一根桩。在

台阶

假设您知道如何将一个大小为n的塔向右移动一个挂钩,下面是如何对n+1磁盘执行此操作:

^{pr2}$

相关问题 更多 >