move(n, a, b, c):
为什么move(n, a, b, c):表示n从a->b
还有print a, '-->', c 为什么只在
move(n-1, a, c, b)
print a, '-->', c #c=b
move(n-1, b, a, c)
中间写一次?
print a, '-->', c 是相对于move(n, a, b, c):还是对于move(n-1, a, c, b) 说的
为什么move(n, a, b, c):表示n从a->b
还有print a, '-->', c 为什么只在
move(n-1, a, c, b)
print a, '-->', c #c=b
move(n-1, b, a, c)
中间写一次?
print a, '-->', c 是相对于move(n, a, b, c):还是对于move(n-1, a, c, b) 说的
2017-07-23
我来把整段代码解释一下吧!希望能解决你的问题。
def move(n, a, b, c): #定义一个函数(由下面代码的“a, '-->', c”可以看出,该函数的最终目的是要将a柱中的n个盘子移动到c柱中)。
if n==1:
print a,'-->',c #只有一个盘子时,只需将其从a柱移动到c柱,一步到位。
return
move(n-1,a,c,b) #这一行代码可以理解成是在继续定义函数,可以看出,与原始函数相比较,b与c的位置互换了,表示将a柱中的上面n-1个盘子移动到b柱中,b柱中就总共有n-1个盘子。那么,a柱中就只剩下最下面一个盘子了。
print a,'-->',c #然后一步是,将a柱中的盘子即剩下的最下面那个盘子移动到c柱中。
move (n-1,b,a,c) #接着定义函数,可以看出,与原始函数相比较,a与b的位置互换了,表示将b柱中的n-1个盘子(b柱中总共n-1个盘子)全部移动到c盘中。
move(4, 'A', 'B', 'C') #输出利用‘B’这个中转站将‘A’中的4个元素按顺序替换到'C'中的结果。
举报