課程
/后端開發
/Python
/初識Python
def?move(n,?a,?b,?c): ????if?n?==?1: ????????print?a,'-->',?c ????????return ????move(n-1,a,c,b) ????print?a,'==>',?c ????move(n-1,b,a,c) move(2,?'A',?'B',?'C') A?-->?B A?==>?C B?-->?C
2016-03-24
源自:初識Python 7-5
正在回答
漢諾塔的遞歸問題,特別容易被 參數名 給弄混淆,這個問題可以分為兩部分來說:
首先,這是一個遞歸問題,遞歸問題的思路都是一致的:
首先,遞減遞歸,其次做邊界判斷。 遞減調用:就是題主代碼里的第5行,第7行代碼; 邊界判斷: 第2行的if判斷。
其次這是一個漢諾塔問題,漢諾塔的問題,就是在除了初始柱外,依次放入次大底盤,且依次從初始柱解放最大底盤,這個問題代入遞歸的話就需要以下思路:
反向思考,從最簡單的只有兩個盤子考慮,而后依次遞增。 一個盤子的話就是會直接進入if判斷,也沒什么可以考慮的。
最后說下,漢諾塔的遞歸思路中最易混淆的“參數名”,在此只做一次說明,在第5行調用
move(n-1,a,c,b)
這次調用move函數時:執行到第6行:
print?a,'==>',?c
打印的是:?
A?-->?B
想明白這些,然后從只有三個盤子去套用函數,應該就能明白了,如果還不明白,也不是我打字能說明的了。
醉大俠 提問者
漢諾塔,兩個圓盤(把A柱子上面的兩個圓盤按照原來的大小順序移動到C柱子上),把最上面的盤子從A移動到B,再把中間的盤子從A移動到C,最后把B柱子上的盤子從B移動到C。
好好的爲甚麼不來 回復 醉大俠 提問者
舉報
學python入門視頻教程,讓你快速入門并能編寫簡單的Python程序
Copyright ? 2025 imooc.com All Rights Reserved | 京ICP備12003892號-11 京公網安備11010802030151號
購課補貼聯系客服咨詢優惠詳情
慕課網APP您的移動學習伙伴
掃描二維碼關注慕課網微信公眾號
2016-03-24
漢諾塔的遞歸問題,特別容易被 參數名 給弄混淆,這個問題可以分為兩部分來說:
首先,這是一個遞歸問題,遞歸問題的思路都是一致的:
其次這是一個漢諾塔問題,漢諾塔的問題,就是在除了初始柱外,依次放入次大底盤,且依次從初始柱解放最大底盤,這個問題代入遞歸的話就需要以下思路:
最后說下,漢諾塔的遞歸思路中最易混淆的“參數名”,在此只做一次說明,在第5行調用
這次調用move函數時:執行到第6行:
打印的是:?
想明白這些,然后從只有三個盤子去套用函數,應該就能明白了,如果還不明白,也不是我打字能說明的了。
2016-03-24
漢諾塔,兩個圓盤(把A柱子上面的兩個圓盤按照原來的大小順序移動到C柱子上),把最上面的盤子從A移動到B,再把中間的盤子從A移動到C,最后把B柱子上的盤子從B移動到C。