課程
/后端開發
/Python
/初識Python
漢諾塔這個任務不會做呢,答案也看不懂求解答
2018-03-19
源自:初識Python 7-5
正在回答
建議你先下載一個坦諾塔游戲體驗一下就明白這個邏輯了。如果有三個柱子,a柱子,b柱子,c柱子,a柱子上掛著n個盤子。盤子從上到下是由小到大羅列著的,且小的必須在大的上面。
def move(n, a, b, c) ?#def 定義該函數move
????if n == 1 ?#如果柱子上只有一個盤子
????print(a,'-->',c) ?#直接輸出 a --> c即可,只有一個盤子,直接從a移動到b即可。這也是最終目的,就是把a柱子上的盤子全部移動到c柱子上。
????move(n-1,a, c, b)#共有n個盤子,先將n-1個盤子從a柱子移動到b柱子上。
????move(1, a, b, c) #將最后一個柱子從a柱子移動到c柱子上。
????move(n-1,b, a, c) #再將剛才移動到b柱子上的n-1個盤子移動到c柱子上。
可以自己代入下2個或者3個自行整理下邏輯就好了。
def move(n, a, b, c):
? ? if n ==1: ? ? ? ? ? ? ? ? ? ? #只有一個,直接把a的圓盤換到c
? ? ? ? print a, '-->', c ? ? ?#這樣輸出的意思就是a?移動到 c
? ? ? ? return
?#n>1時
? ? move(n-1, a, c, b) ? ?#根據題意首先需要把 (N-1) 個圓盤從a移動到 b。然后,將 a的最后一個圓盤移動到c(n==1即最后一個)這里因為遞歸調用了本函數,所以會循環執行下去直到遇到n==1,執行上面三行代碼
? ? print a, '-->', c ? #打印步驟
? ? move(n-1, b, a, c) #再將b的(N-1)個圓盤移動到c。
尷尬了,我也看得不是很明白
舉報
學python入門視頻教程,讓你快速入門并能編寫簡單的Python程序
Copyright ? 2025 imooc.com All Rights Reserved | 京ICP備12003892號-11 京公網安備11010802030151號
購課補貼聯系客服咨詢優惠詳情
慕課網APP您的移動學習伙伴
掃描二維碼關注慕課網微信公眾號
2018-03-19
建議你先下載一個坦諾塔游戲體驗一下就明白這個邏輯了。如果有三個柱子,a柱子,b柱子,c柱子,a柱子上掛著n個盤子。盤子從上到下是由小到大羅列著的,且小的必須在大的上面。
def move(n, a, b, c) ?#def 定義該函數move
????if n == 1 ?#如果柱子上只有一個盤子
????print(a,'-->',c) ?#直接輸出 a --> c即可,只有一個盤子,直接從a移動到b即可。這也是最終目的,就是把a柱子上的盤子全部移動到c柱子上。
????move(n-1,a, c, b)#共有n個盤子,先將n-1個盤子從a柱子移動到b柱子上。
????move(1, a, b, c) #將最后一個柱子從a柱子移動到c柱子上。
????move(n-1,b, a, c) #再將剛才移動到b柱子上的n-1個盤子移動到c柱子上。
可以自己代入下2個或者3個自行整理下邏輯就好了。
2018-03-19
def move(n, a, b, c):
? ? if n ==1: ? ? ? ? ? ? ? ? ? ? #只有一個,直接把a的圓盤換到c
? ? ? ? print a, '-->', c ? ? ?#這樣輸出的意思就是a?移動到 c
? ? ? ? return
?#n>1時
? ? move(n-1, a, c, b) ? ?#根據題意首先需要把 (N-1) 個圓盤從a移動到 b。然后,將 a的最后一個圓盤移動到c(n==1即最后一個)這里因為遞歸調用了本函數,所以會循環執行下去直到遇到n==1,執行上面三行代碼
? ? print a, '-->', c ? #打印步驟
? ? move(n-1, b, a, c) #再將b的(N-1)個圓盤移動到c。
2018-03-19
尷尬了,我也看得不是很明白