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

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

漢諾塔問題

為什么下一步就變成move(n-1,a,c,b)了,n-1能理解,a,c,b是為什么??

正在回答

3 回答

這一步描述的是過渡環節。表示把n-1個盤子從a通過b移動到c。

只有這樣才能把a上最大的一個盤子移動到c。

下一步是print a,'-->',c。就表示,把剩下的最大的盤子從a移動到c。

最后一步move(n-1, b, a, c)。表示,把之前移動到b上的n-1個盤子通過a移動到c。

完成遞歸

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

def mov(n, a, b, c):? #定義函數n為圓盤數量, a為A柱子,b為B柱子,c為C柱子
??? if n ==1: ? ? ? ? ? ? ?#判斷圓盤數量是否等于1
??????? print a, '-->', c?#如果等于,輸出函數 ?? A柱子---c柱子
??????? return ? ? ? ? ? ? ?#跳過當前函數#
??? mov(n-1, a, c, b) ?#圓盤數量減1, ? 將柱子換位置(我是這么理解的)
??? print a, '-->', c ? ??#輸出函數 ? A柱子-----B柱子 看c在第二位相當于定義函數里面的B
??? mov(n-1, b, a, c) ?#圓盤數量減1,? 將柱子換位置? 這個時候如果輸出a----c 實際顯示出來的是B-----C

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?? a在2號位 ? c在3號位



mov(4, 'A', 'B', 'C') ? #運行這個 圓盤數量為4 ? 對應柱子標號a=A? b=B? c=C的函數


輸出結果為

A --> B ? ? ? ? ?
A --> C
B --> C
A --> B
C --> A
C --> B
A --> B
A --> C
B --> C
B --> A
C --> A
B --> C
A --> B
A --> C
B --> C

運行步驟

  1. 執行剛定義的函數其參數====mov(4, 'A', 'B', 'C'? 注意:這個函數里面n=4 ? a=A ? b=B? c=C

  2. 按照函數的步驟 判斷n==1 此處不等于則 跳出函數

  3. 運行函數mov(n-1, a, c, b)?

  4. .。。。。。。。。。。。。。。。。。。

?






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

這個事情你抽象一下想就可以了。 首先move(n, a, b, c)是表示把A柱的n個碟子通過B柱移動到C柱。那如果讓你來做這個事情,你肯定希望有人幫你把n-1個碟子先移動到B柱,你直接把最后一個碟子移動到C柱子,然后再請人幫忙把B柱的碟子移動到C柱。 ?acb就是請人幫你把碟子通過C柱移動到B柱的過程

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

舉報

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

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

進入課程

漢諾塔問題

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

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

幫助反饋 APP下載

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

公眾號

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