課程
/后端開發
/Python
/初識Python
乘階的例子還看得懂,但是后面的漢諾塔,看不懂,也不但了解,能不能進一步詳細解答,求高手,通俗易懂的舉例!
2015-03-06
源自:初識Python 7-5
正在回答
漢諾塔整體思路就是運用遞歸函數:
#_*_ coding:utf-8 _*_
def move(n,a,b,c): #定義移動函數,將n個盤子,從a移動到c
? ? if n==1:????????????
? ? ? ? print a,'-->',c
? ? ? ? return?????????? #只有1個盤子,直接將這個盤子從a移動到c
? ??????????????????????????? #當大于1時,開始引用遞歸函數,現將n個盤分為兩部分:1個和n-1個,1個時候就按照上述直接移動
????move(n-1,a,c,b) #n-1個時,先將n-1個從a移動至b,就左邊的函數(a,b,c位置變化,是因為函數定義
? ? print a,'-->',c ? ? 是將a移動c,所以要從a移動至b,b的位置要發現生變)
? ? move(n-1,b,a,c) ?#這個就是將移動b的盤子移動到c,參數位置變化原因同上
move(4,'a','b','c')
舉報
學python入門視頻教程,讓你快速入門并能編寫簡單的Python程序
Copyright ? 2025 imooc.com All Rights Reserved | 京ICP備12003892號-11 京公網安備11010802030151號
購課補貼聯系客服咨詢優惠詳情
慕課網APP您的移動學習伙伴
掃描二維碼關注慕課網微信公眾號
2015-12-15
漢諾塔整體思路就是運用遞歸函數:
#_*_ coding:utf-8 _*_
def move(n,a,b,c): #定義移動函數,將n個盤子,從a移動到c
? ? if n==1:????????????
? ? ? ? print a,'-->',c
? ? ? ? return?????????? #只有1個盤子,直接將這個盤子從a移動到c
? ??????????????????????????? #當大于1時,開始引用遞歸函數,現將n個盤分為兩部分:1個和n-1個,1個時候就按照上述直接移動
????move(n-1,a,c,b) #n-1個時,先將n-1個從a移動至b,就左邊的函數(a,b,c位置變化,是因為函數定義
? ? print a,'-->',c ? ? 是將a移動c,所以要從a移動至b,b的位置要發現生變)
? ? move(n-1,b,a,c) ?#這個就是將移動b的盤子移動到c,參數位置變化原因同上
move(4,'a','b','c')