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:        # 由于打印的是a --> c,所以在函数中的第三个参数b(n,a,b,c),只能作为桥梁,永远不会打印出来        move(n-1,a,c,b)  # 对倒c b 两个柱子,使桥梁发挥作用,此时函数中的第三个参数 c 为桥梁,a 最终会将n-1个盘子放到b上面        print(a,'==>',c)  # a 中最大盘子 直接到 c        move(n-1,b,a,c)  # 将b 作为第二个参数,即打印时a --> c 的 a 参数,说明这个是用来将 b柱 到 c柱, 以a 为桥梁        move(3,'A','B','C')# 递归函数就是俄罗斯套娃,你不能一直想子函数里面在干什么,这么想的话会有很复杂的逻辑套着你,怎么想都不会想通。你只需要知道你能看到的那一个或者几个函数干了什么就可以了

范伟

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

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

    if n == 1:

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

    else:

        # 由于打印的是a --> c,所以在函数中的第三个参数b(n,a,b,c),只能作为桥梁,永远不会打印出来

        move(n-1,a,c,b)  # 对倒c b 两个柱子,使桥梁发挥作用,此时函数中的第三个参数 c 为桥梁,a 最终会将n-1个盘子放到b上面

        print(a,'==>',c)  # a 中最大盘子 直接到 c

        move(n-1,b,a,c)  # 将b 作为第二个参数,即打印时a --> c 的 a 参数,说明这个是用来将 b柱 到 c柱, 以a 为桥梁

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

# 递归函数就是俄罗斯套娃,你不能一直想子函数里面在干什么,这么想的话会有很复杂的逻辑套着你,怎么想都不会想通。你只需要知道你能看到的那一个或者几个函数干了什么就可以了


  • 1

Reply