給不明白的同學解釋一下,如果有理解錯誤請指出謝謝~
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(4, 'A', 'B', 'C')
首先了解函數的意思,n代表個數,3個參數的意思是a通過b移動到c
然后就有了如下的內容:
遞歸的思路就是重復,我們可以看看n=1的時候,應該就是直接把a移動到c就好,所以終止條件就有了。
那如何到這個終止條件的前一步呢,正如題目所說,a應該只有最后一個圓盤,其余的都在b,所以問題就編程了將a的n-1個盤移動到b上,所以我們第二行寫move(n-1,a,c,b),注意print的時候還是a和c,這里的a和c代表的是第一個柱子和第三個柱子。
這時候我們就已經完成了第一步,將最后一個圓盤移動到了C上,然后現在的狀態是第一個柱子沒有,第二個柱子有n-1個,第三個柱子有1個,然后視第三個柱子為完成,我們現在要做的是將第二個柱子的前n-1個移動到a,最后一個移動到C,按照我們函數的寫法就應該是(n-1,b,a,c),也就是b柱子通過a柱子移動到c上。
這樣應該就比較好理解了吧~
2016-06-14
? ? ? return
? ? move(n-1,a,c,b)
? ? print a,'-->',c
? ? move(n-1,b,a,c)
我不懂return到底返回了什么,是返回了下面這三行語句嗎?
2015-11-19
Mark一下
2014-11-19
我想問問你:“def move(n, a, b, c):”這里的a,b,c,是不是分別對應,ABC,即a=A,b=B,c=C,那到后面這些abc的對應值變了沒有?還有,是哪一行操作是讓python對這個移動方案進行一一羅列的?