【Python笔记】递归函数实现汉诺塔移动

来源:互联网 发布:淘宝金牌买家的信用分 编辑:程序博客网 时间:2024/05/22 07:42

实现代码:

def move(n, a, b, c):    if n == 1:        print('#', a, '--->', c)     else:        move(n-1, a, c, b) #以C为跳板把n-1个盘子从A移到B        print('#', a, '--->', c)        move(n-1, b, a, c) #以B为跳板把n-1个盘子从B移到C代码运行

代码示例:

>>> move(3, 'A', 'B', 'C')# A ---> C# A ---> B# C ---> B# A ---> C# B ---> A# B ---> C# A ---> C

代码解析:

n = 3move(3, 'A', 'B', 'C') # a=A, b=B, c=C    move(2, 'A', 'C', 'B') # a=A b=C c=b        move(1, 'A', 'B', 'C') # a=A b=B c=C            print( A ----> C)        print( A ----> B)        move(1, 'C', 'A', 'B') # a=C b=A c=B            print( C ---->B)    print( A ----> C)    move(2, 'B', 'A', 'C') # a=B b=A c=C        move(1,'B', 'C', 'A') # a=B b=C c=a            print( B ----> A)        print( B ----> C)        move(1, 'A', 'B', 'C') # a=A b=B c=C            print( A ----> C)
原创粉丝点击