這個邏輯不是很懂啊?這兩個move的順序是怎么樣的?看詳情
def move(n, a, b, c):
? ? if n ==1:
? ? ? ? print a, '-->', c
? ? ? ? return
? ? move(n-1, a, c, b)#將N-1個塔通過c移動到b
? ? print a, '-->', c#這里是將最下面最大的一個塔移動到了c嗎?
? ? move(n-1, b, a, c)#將N-1個塔通過b移動到c
move(4, 'A', 'B', 'C')
##用腦子想了半天的一個游戲,就從N變成了N-1然后就可以讓計算機自己去跑了嗎,?我還下了個漢諾塔小游戲竟然答案是對的
2018-08-30
? move(n-1, b, a, c)#將N-1個塔通過b移動到c? ? ?這一行意思應該是將N-1個塔通過a移動到c?
做個假設比如n=3(即a中有123三個圓盤n>1)時,那么就把12先看作一個整體(即N-1),先把1,2通過c移到b中即move(n-1, a, c, b),這樣我們就可以把最大的數字3從a移到c了即輸出print a, '-->', c接著就是12已經在b中了,3在c中而a并沒有圓盤,這時候我們輸出move(n-1, b, a, c)把a和b位置調換就是正確的了,即把b中的12通過a移到c中(3已經在c中我們就不鳥它了)。就這樣一直遞歸到n==1時,我們再輸出print a, '-->', c,然后結束。
2018-09-08
感覺到這里就開始變難了呢~
這是老師給的百度百科里面的
Python
def
?hanoi(n,?a,?b,?c):
????
if
?n?
=
=
?1
:
????????
print
(a,?
'-->'
,?c)
????
else
:
????????
hanoi(n?
-
?1
,?a,?c,?b)
????????
print
(a,?
'-->'
,?c)
????????
hanoi(n?
-
?1
,?b,?a,?c)
#?調用
hanoi(
5
,?
'A'
,?
'B'
,?
'C'
)
有else好理解一些
2018-08-29
這個邏輯不是很懂???這兩個move的順序是怎么樣的?看詳情
def move(n, a, b, c):
? ? if n ==1:
? ? ? ? print a, '-->', c
? ? ? ? return
? ? move(n-1, a, c, b)#將N-1個塔通過c移動到b
? ? print a, '-->', c#這里是將最下面最大的一個塔移動到了c嗎?
? ? move(n-1, b, a, c)#將N-1個塔通過b移動到c
move(4, 'A', 'B', 'C')
##用腦子想了半天的一個游戲,就從N變成了N-1然后就可以讓計算機自己去跑了嗎,?我還下了個漢諾塔小游戲竟然答案是對的
對于move這個函數當N=1的時候執行第二行,當N>1的時候,執行5,6,7行代碼嗎?就比如當N=4的時候這里面5-6-7行代碼的循環順序是怎樣的呢???