python--汉诺塔

汉诺塔-游戏规则:

1.一次只能移动一个

2.小盘始终放在大盘上


python--汉诺塔


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

    if n == 1:
        print(a, '-->', c)
    else:
        move(n - 1,a,c,b) #将n-1个盘子,从a.移动到b上

        print(a, '-->', c) #最后一个盘子从a移动到c上

move(n - 1,b,a,c)#将n-1个盘子,又从b移动到c上


后面这三句注释,每一个又是一次独立的汉诺塔游戏。直到n为1

输出

python--汉诺塔

分解来看:

move(3, 'A', 'B', 'C')

当n=3

move(2,a,c,b)

当n=2

    move(1,a,b,c)

当n=1

        print('a', '-->', 'c')
    print(a, '-->', b)
    move(1,c,a,b)
        print('c', '-->', 'b')
 
print(a,c)
        
move(2,b,a,c)
    move(1,b,c,a)
        print('b', '-->', 'a')
    print(b, '-->', c)
    move(1,a,b,c)

        print('a', '-->', 'c')