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