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
舉報
2019-12-31
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'中的結果。