亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定

這個漢諾塔算法,感覺有點沒懂,有疑問求解答!

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

  2. ? ? if n==1:

  3. ? ? ? ? print a,'-->',c

  4. ? ? ? ? return

  5. ? ? move(n-1,a,c,b)

  6. ? ? print a,'-->',c

  7. ? ? move(n-1,b,a,c)

  8. move(3, 'A', 'B', 'C')

第六行的print看不懂。。還有第七行也沒明白,沒有print了嗎,代碼在哪里遞歸的呢

正在回答

2 回答

n=1的時候就不用解釋了吧。主要是以下三步:

move(n-1,a,c,b)
print a, '-->', c
move(n-1,b,a,c)

1、當n>1時,需要把“a”柱除最底端圓盤的所有(n-1個)移動到“b”柱,move(n-1,a,c,b)

2、然后把“a”柱剩下的最底端圓盤(即最大圓盤)移動到“c”柱,print a, '-->', c

3、最后把第一步移動到“b”柱的所有圓盤移動到“c”柱,move(n-1,b,a,c)

邏輯就是把n-1個圓盤先移動到過渡位置,最大的移動到目標位置后,再把過渡位置的n-1個圓盤移動到目標位置。剩下的任務就是程序自動遞歸循環。


1 回復 有任何疑惑可以回復我~

move(n,a,b,c)這個函數可以理解為,把n從a借助b,移到c的柱子上,

那么需要就是先處理上面的n-1層,那么第五行的作用就是把n-1行,從a借助c轉移到b柱子上,然后輸出方法,此時n層上面是空的了,然后把n層從a柱子移到c柱子就完成了,然后再開始move(n-1,b,a,c),重復上述過程

3 回復 有任何疑惑可以回復我~

舉報

0/150
提交
取消
初識Python
  • 參與學習       758392    人
  • 解答問題       8967    個

學python入門視頻教程,讓你快速入門并能編寫簡單的Python程序

進入課程

這個漢諾塔算法,感覺有點沒懂,有疑問求解答!

我要回答 關注問題
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號