python中漢諾塔的遞歸算法詳解


請編寫move(n, a, b, c)函數,它接收參數n,表示3個柱子A、B、C中第1個柱子A的盤子數量,然后打印出把所有盤子從A借助B移動到C的方法,例如:

                        def move(n, a, b, c):

                            pass

答案:

def move(n,a,b,c):
  if n==1:
    print(a,'->',c)
   else:
    move(n-1,a,c,b)
    move(1,a,b,c)
    move(n-1,b,a,c)
理解的關鍵不需要管每一步是怎么解決的。重點是實現你的目的。我們可以這么理解:

move(n,起點,緩沖區,終點)
 
我們的步驟是把上面n-1個盤子搬到緩沖區move(n-1,a,c,b),
然后把最大的盤子搬到終點去 move(1,a,b,c)
最后緩存區變成了起點,起點變成了緩沖區。 move(n-1,b,a,c)
 


免責聲明!

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



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