漢諾塔的移動問題
這個移動的函數不是很理解:
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)
求解答
這個移動的函數不是很理解:
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)
求解答
2019-03-06
舉報
2019-03-24
流程誰都明白, 簡單的形參換換位置的事兒,可是輸出結果不對啊 按照游戲規則 不應該是
第一步輸出 N-1 個 A-->B,
第二部輸出 1個? ? ?A--> C,
第三部輸出 N-1個? B-->C? 這樣print輸出結果才對吧?????
2019-03-06
剛剛把思路順好了。
if n==1:
? ? ? ?print a,'-->',c
? ? ? ?return?
1)首先,當n為1時,只需要將A上面的唯一一個移動到C上面;
move(n-1,a,c,b)
2)其次,若n不為1,則將A上面除了最下面最大的盤子之外,也就是n-1個移動到B上面;
print a,'-->',c
3)經過上一步,A現在只有一個盤子了,則只需要將這一個移動到C上面;
move(n-1,b,a,c)
最后一步,就是將B上面的盤子移動到C上。
這是總體的思路從第二步開始就開始有內部的循環了,現在,B上面有n-1個盤子,此時的B就相當于上面講的A,此時的應為:(n-1,b,a,c)。然后想辦法把B上面的移動到c上面。以此類推,直到A,B均為空,C上的盤子按順序派好,就是整個遞歸的過程。
2019-03-06
同表示沒看懂