Discuss / Python / 之前的哥们真的没看懂你的逻辑

之前的哥们真的没看懂你的逻辑

Topic source

YondMars

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

比如print指令只有一个,为什么n=2时会打印3次各种没看懂,想了个笨办法,反而一下就看懂了,代码如下,请根据打印出来的内容(打印出来5个n的顺序就是递归运行的逻辑顺序),按照从上往下以“第X个n”为标记在脑海里模拟,应该就能明白了吧


def move(n, a, b, c, num = [1]) :
    print("第一个",n)
    if n == 0:
        return

    print("  第二个",n)
    move(n - 1, a, c, b, num)
    print("    第三个",n)
    print('%d: %s --> %s'%(num[0], a, c))
    num[0] = num[0] + 1
    print("      第四个",n)
    move(n - 1, b, a, c, num)
    print("        第五个",n)

while True:
    n = int(input("请输入汉诺塔的层数:"))
    if n == 0:
       break 
    elif n < 1:
        print ("\n请输入大于等于1的整数")
        continue
    else:
        move(n,'a','b','c',num = [1])

  • 1

Reply