求python大神帮忙解释一下 这个汉诺塔程序的步骤

2025-03-17 03:28:33
推荐回答(3个)
回答1:

def my_print(args):

print args

def move(n, a, b, c):

my_print ((a, '-->', c)) if n==1 else (move(n-1,a,c,b) or move(1,a,b,c) or move(n-1,b,a,c))

注释:汉诺塔模型输入move (n, 'a', 'b', 'c')

  1. 例如n=3

  2. move(2,a,c,b)自循环

  3. move(1,a,b,c)

  4. move(2,b,a,c) 自循环

  5. 循环完毕,输出

你这段代码也是类似自循环

回答2:

这张图我觉得你能够解决你的问题。 灰色部分是我自己的原创,其他的借鉴了网上的。

回答3:

def move(n, a, b, c):
    if n ==1: #如果要移动的是第1个盘子
        print a, '-->', c #直接将其从a移到c
        return
    move(n-1, a, c, b) #否则递归移动第1~n-1个盘子到b柱上
    print a, '-->', c #此时a柱上只剩第n个盘子,直接将其从a移动到c
    move(n-1, b, a, c) #继续递归移动第1~n-1个盘子到c柱上