if n == 1:
print(a, '-->', c)
else:
move(n-1, a, c, b)
move(1, a, b, c)
move(n-1, b, a, c)
return
实际运行过程:
move(3, 'A', 'B', 'C')
①3!=1
move(2,a,c,b)
move(1,a,b,c)
move(2,b,a,c)
②2!=1(else第一行move(2,a,c,b))
move(1,a,c,b)
move(1,c,a,b)
③1==1(else第二行move(1,a,b,c))
④2!=1(else第三行move(2,b,a,c))
move(1,b,c,a)
move(1,b,a,c)
因此,最后执行:
②print(a, '-->', c)即A --> C
print(a, '-->', b)即A --> B
print(c, '-->', b)即C --> B
③print(a, '-->', c)即A --> C
④print(b, '-->', a)即B --> A
print(b, '-->', c)即B --> C
print(a, '-->', c)即A --> C
看到这终于整明白运行思路了,感谢
问下大佬最后的return是必须的吗?我看好像是个哑函数也不用输出啥……
只有这个才看懂了,牛逼
Sign in to make a reply
Mints_鱼酱
if n == 1:
print(a, '-->', c)
else:
move(n-1, a, c, b)
move(1, a, b, c)
move(n-1, b, a, c)
return
实际运行过程:
move(3, 'A', 'B', 'C')
①3!=1
else:
move(2,a,c,b)
move(1,a,b,c)
move(2,b,a,c)
②2!=1(else第一行move(2,a,c,b))
else:
move(1,a,b,c)
move(1,a,c,b)
move(1,c,a,b)
③1==1(else第二行move(1,a,b,c))
print(a, '-->', c)
④2!=1(else第三行move(2,b,a,c))
else:
move(1,b,c,a)
move(1,b,a,c)
move(1,a,b,c)
因此,最后执行:
②print(a, '-->', c)即A --> C
print(a, '-->', b)即A --> B
print(c, '-->', b)即C --> B
③print(a, '-->', c)即A --> C
④print(b, '-->', a)即B --> A
print(b, '-->', c)即B --> C
print(a, '-->', c)即A --> C