請編寫move(n, a, b, c)
函數,它接收參數n
,表示3個柱子A、B、C中第1個柱子A的盤子數量,然后打印出把所有盤子從A借助B移動到C的方法,例如:
def move(n, a, b, c):
pass
答案:
def move(n,a,b,c):
if n==1:
print(a,'->',c)
else:
move(n-1,a,c,b)
move(1,a,b,c)
move(n-1,b,a,c)
理解的關鍵不需要管每一步是怎么解決的。重點是實現你的目的。我們可以這么理解:
move(n,起點,緩沖區,終點)
我們的步驟是把上面n-1個盤子搬到緩沖區move(n-1,a,c,b),
然后把最大的盤子搬到終點去
move(1,a,b,c) 。
最后緩存區變成了起點,起點變成了緩沖區。
move(n-1,b,a,c)