課程
/后端開發
/Python
/初識Python
為什么下一步就變成move(n-1,a,c,b)了,n-1能理解,a,c,b是為什么??
2017-12-02
源自:初識Python 7-5
正在回答
這一步描述的是過渡環節。表示把n-1個盤子從a通過b移動到c。
只有這樣才能把a上最大的一個盤子移動到c。
下一步是print a,'-->',c。就表示,把剩下的最大的盤子從a移動到c。
最后一步move(n-1, b, a, c)。表示,把之前移動到b上的n-1個盤子通過a移動到c。
完成遞歸
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 --> CB --> CA --> BC --> AC --> BA --> BA --> CB --> CB --> AC --> AB --> CA --> BA --> CB --> C
運行步驟
執行剛定義的函數其參數====mov(4, 'A', 'B', 'C'? 注意:這個函數里面n=4 ? a=A ? b=B? c=C
按照函數的步驟 判斷n==1 此處不等于則 跳出函數
運行函數mov(n-1, a, c, b)?
.。。。。。。。。。。。。。。。。。。
?
這個事情你抽象一下想就可以了。 首先move(n, a, b, c)是表示把A柱的n個碟子通過B柱移動到C柱。那如果讓你來做這個事情,你肯定希望有人幫你把n-1個碟子先移動到B柱,你直接把最后一個碟子移動到C柱子,然后再請人幫忙把B柱的碟子移動到C柱。 ?acb就是請人幫你把碟子通過C柱移動到B柱的過程
舉報
學python入門視頻教程,讓你快速入門并能編寫簡單的Python程序
Copyright ? 2025 imooc.com All Rights Reserved | 京ICP備12003892號-11 京公網安備11010802030151號
購課補貼聯系客服咨詢優惠詳情
慕課網APP您的移動學習伙伴
掃描二維碼關注慕課網微信公眾號
2017-12-02
這一步描述的是過渡環節。表示把n-1個盤子從a通過b移動到c。
只有這樣才能把a上最大的一個盤子移動到c。
下一步是print a,'-->',c。就表示,把剩下的最大的盤子從a移動到c。
最后一步move(n-1, b, a, c)。表示,把之前移動到b上的n-1個盤子通過a移動到c。
完成遞歸
2017-12-02
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
運行步驟
執行剛定義的函數其參數====mov(4, 'A', 'B', 'C'? 注意:這個函數里面n=4 ? a=A ? b=B? c=C
按照函數的步驟 判斷n==1 此處不等于則 跳出函數
運行函數mov(n-1, a, c, b)?
.。。。。。。。。。。。。。。。。。。
?
2017-12-02
這個事情你抽象一下想就可以了。 首先move(n, a, b, c)是表示把A柱的n個碟子通過B柱移動到C柱。那如果讓你來做這個事情,你肯定希望有人幫你把n-1個碟子先移動到B柱,你直接把最后一個碟子移動到C柱子,然后再請人幫忙把B柱的碟子移動到C柱。 ?acb就是請人幫你把碟子通過C柱移動到B柱的過程