这个到底是怎么顺序啊 我好晕
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(5, '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(5, 'A', 'B', 'C')
2015-08-13
为什么我的感觉跟各位不一样呢?
move函数几个形式参数:第一个表示需要移动的圆盘数,第二个(不一定是a)表示准备移走的柱子,第三个表示过渡柱子,第四个参数表示目标柱子。
if n == 1:
print (a,'-->',c) #这其实是只有一个圆盘需要从A到C的情况。所有递归,最终都是走到这一步。
return #这是结束递归,省略了None。没有这句的话,递归没办法结束。
move(n-1,a,c,b) #将A柱的n-1个盘移到B柱,这里毫无争议。注意形参顺序变化了。
print a,'-->',c #这句话才是第一个柱子的第n个圆盘移动到目标柱子。
move(n-1, b, a, c)) #过渡柱子B上(n-1)个圆盘B递归移动到目标柱子C
举报