Python遞歸算法實現漢諾塔(附代碼+運行情況)


首先你要知道漢諾塔是通過遞歸函數來解決的,遞歸函數,通俗易懂講就是自己調用自己,類似於貓抓自己的尾巴,然后你可以腦子里把他想象成一個圈了。

漢諾塔的規則我就不說了,只給大家講講怎么理解代碼

1 def move(n,a,b,c):  #n代表圓盤數,a,b,c分別代表初始柱,緩沖柱,目標柱
2     if n==1:
3         print(a,'-->',c)  
4     else:
5         move(n-1,a,c,b)#將 N-1 個圓盤從A移動到B (A C B)
6     print(a,'-->',c) 將最大的圓盤從A直接移動到C (A C)因為不需要任何緩沖,直接移過去,所以是沒有緩沖柱
7      move(n-1,b,a,c) 將 N-1 個圓盤從B移動到C  (B A C)

為了講解清楚,我給代碼標記了行號。

①如果圓盤只有1,那就隨便移動,直接把A移動到C,   A->C

②就是圓盤數量不是1的時候,代碼中第四行開始。在講之前,我們看第三行代碼

print(a,'-->',c)

我們可以看到,在代碼實現中A直接移動到C,是(a ‘>’ c)

我們在看第⑤行代碼,意思是A移動B,那么代碼就是(A   B)A指向B

 move(n-1,a,c,b) 

就是A在左,B在最后,緩沖柱就在中間,大家可以觀察觀察是不是這樣,到底是怎么做緩沖的,大家可以把這三個柱子想象成我前面說的一個圓圈

舉個例子哦,如果C移動到B,那么就是(C A B )C在左 B在右 中間是緩沖柱,現在一想就很清楚了。

 

 

代碼+運行結果

 

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM