Discuss / Python / 别听他们搁那扯淡,他们自己也不知道程序是怎么运行的,写个代码都扯上玄学了...

别听他们搁那扯淡,他们自己也不知道程序是怎么运行的,写个代码都扯上玄学了...

Topic source

宋忠义_

#1 Created at ... [Delete] [Delete and Lock User]
def move(n, a, b, c):
    if n == 1:
        print(a, '-->', c)
    else:
        move(n - 1, a, c, b)
        move(1, a, b, c)
        move(n - 1, b, a, c)

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

逐步解析: move(n - 1, a, c, b) 此时move(n, a, b, c) = move(2, A, C, B),执行一遍else的三行代码,依次代入,输出结果为: A --> C A --> B C --> B move(1, a, b, c) 此时move(n, a, b, c) = move(1, A, B, C),执行if代码,输出结果为: A --> C move(n - 1, b, a, c) 此时move(n, a, b, c) = move(2, B, A, C).再次执行一遍else的三行代码,输出结果为: B --> A B --> C A --> C

所以代码的运行步骤就是这样,具体的参数代入需要你费费脑子,其实很好理解


  • 1

Reply