這個到底是怎么順序啊 我好暈
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
舉報
2015-12-14
為什么我的感覺跟各位不一樣呢?
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
2015-12-14
我用記事本寫了個具體的過程 不知道你看不看得懂
2015-12-09
def move(n, a, b, c):
if n == 1:
print (a,'-->',c)#將A柱的最后1個盤移到C柱
return
move(n-1,a,c,b)#將A柱的N-1個盤移到B柱,
print (a,'-->',c)
move(n-1,b,a,c)#將B柱的N-1個盤移到C柱
move(4, 'A', 'B', 'C')
2015-10-25
其實就是把開始A柱的n-1個盤子挪到B上,在move(n-1,a,c,b)中的b就是開始函數定義的c,因為這是對定義的函數的調用。因為函數開始定義的就是把a的所有都挪到c上。
2015-10-23
def move(n, a, b, c):
? ? if n==1:???????#第一步很容易理解,就是如果只有一個,就把a直接挪到c
? ? ? ? print a,'-->',c
? ? ? ? return
? ? move(n-1,a,c,b)#就是把之前的n-1個都先放到b上
? ? print a,'-->',c #這里雖然說是print a,'-->',c,實質是把東西從A柱挪到B柱
? ? move(n-1,b,a,c)#由于上面已經把n-1個都放到b上了,此時就是把b全部挪到c上。
move(5, 'A', 'B', 'C')
2015-08-13
漢諾塔問題