Discuss / Python / 结合@Swordinstone文章的理解

结合@Swordinstone文章的理解

Topic source

Eliefly

#1 Created at ... [Delete] [Delete and Lock User]
#代码:
def mov(n,a,b,c):
    if 1==n:
        print(a,'-->',c)    #如果只有一个盘子,直接从A动到C
    else:
        mov(n-1,a,c,b)    #step1:将前n-1个盘子从A移动到B
        mov(1,a,b,c)    #step2:将最底下的第n号盘子从A移动到C
        mov(n-1,b,a,c)    #step3:将B上的n-1个盘子移动到C

#递归过程分解,n>3时同理:        
mov(3,A,B,C)    #调用函数
    mov(2,A,C,B)        #step1:将前n-1个盘子从A移动到B
        mov(1,A,B,C)    #打印A-->C
        mov(1,A,C,B)    #打印A-->B
        mov(1,C,A,B)    #打印C-->B

                        #step2:将最底下的第n号盘子从A移动到C
    mov(1,A,B,C)        #打印A-->C

    mov(2,B,A,C)        #step3:将B上的n-1个盘子移动到C
        mov(1,B,C,A)     #打印B-->A
        mov(1,B,A,C)     #打印B-->C
        mov(1,A,B,C)     #打印A-->C

暗恋喂牛

#2 Created at ... [Delete] [Delete and Lock User]

会那样打印出来的 原因是什么,搞不清楚这块

请问mov(1,C,A,B)是怎么跳到Step2里面的mov(1,A,B,C)的? 还有请问,是执行了第一遍打印,A到C之后按顺序执行了一次这个代码吗?

    else:
        mov(n-1,a,c,b)    #step1:将前n-1个盘子从A移动到B
        mov(1,a,b,c)    #step2:将最底下的第n号盘子从A移动到C
        mov(n-1,b,a,c)    #step3:将B上的n-1个盘子移动到C

然后mov(1,A,B,C)又是怎么调到mov(2,B,C)的呢?

这是来自一个小白的问题

过程搞懂了,谢谢,目前正在思考为什么这么设计这个程序


  • 1

Reply