参考代码的意义
def move(n, a, b, c):
if n == 1:
print a,'-->',c
return
move(n-1,a,c,b)
print a,'-->',c
move(n-1,b,a,c)
move(4, 'A', 'B', 'C')
能给我详细解释一下吗
def move(n, a, b, c):
if n == 1:
print a,'-->',c
return
move(n-1,a,c,b)
print a,'-->',c
move(n-1,b,a,c)
move(4, 'A', 'B', 'C')
能给我详细解释一下吗
2018-07-03
def move(n, a, b, c): # 该函数的目的是将N个a柱子上的圆盘移动到c上。也就是第二个参数的上的圆盘放到第四个参数上。
if n == 1: # 如何只有一个 直接将a上的圆盘移动到c上。
print a,'-->',c
return #目标完成,结束。
move(n-1,a,c,b) #如何a上不只有一个,那么先将a上出底盘外的n-1个圆盘移动到b上,注意函数的目的,是将第二个参数上的圆盘移动到第四个参数上,故而需将第b与c对调,表示将n-1的圆盘先移动到b上。
print a,'-->',c # 将a的底盘放到C
move(n-1,b,a,c) #最后再将b上的n-1个圆盘放到c上。
move(4, 'A', 'B', 'C')
这个你要一层一层按顺序看下来 ,用n = 3 想看起来, move(n-1,a,c,b) 第一次进出这里面,n 变成2 b -> c, c ->b. 注意字母的赋值变化。在里面重新运行一次move函数,还会有move(n-1,a,c,b),n变为1,b、c回到原来的值。注意这里可以说是函数里的函数里的函数,第三层了。这一层return,结束了,是回到第二次 print a,'-->',c move(n-1,b,a,c). 这个时候的n是2,进入一次move(n-1,b,a,c).
逻辑上并不能,只是感觉我们人脑进行这样的思考,很容易混淆吧不熟练的话。可以拿一张大的纸,一层层慢慢下下来,会比较清晰吧。
举报