遞歸方法有些時候是不太好理解,不過遞歸的意義就是把解決問題n變成解決n-1的問題,最終變成解決1個問題。
創(chuàng)新互聯(lián)公司-專業(yè)網(wǎng)站定制、快速模板網(wǎng)站建設(shè)、高性價比新鄭網(wǎng)站開發(fā)、企業(yè)建站全套包干低至880元,成熟完善的模板庫,直接使用。一站式新鄭網(wǎng)站制作公司更省心,省錢,快速模板網(wǎng)站建設(shè)找我們,業(yè)務覆蓋新鄭地區(qū)。費用合理售后完善,十年實體公司更值得信賴。
假設(shè)有n個盤子,從上到下依次編號,最下面的盤子編號是大寫的N。托盤分別是x,y,z。要把所有盤子從x移動到z。
前面幾行代碼就不解釋了,很容易理解。
第五行,如果只有一個盤子,就直接從x移動到z。
第七行,如果不只一個盤子,先把上面n-1個盤子從x移動到y(tǒng)。
第八行,再把N號盤子從x移動到z。
第九行,再把剛才那n-1個盤子從y移動到z。
至于那n-1個盤子是怎么移動的,再次調(diào)用這個函數(shù),把問題變成n-2個盤子加1個盤子的問題。
仔細看一下 5-7行調(diào)用 move 時候的參數(shù)順序, 不是你說的那樣沒有變:
#5 的含義是將 A 上的前 n-1 個移動到 B
#6 : 將 A 最后一個移動到 C
#7: 將 B 上的 n-1 (即#5 從 A 移動過來的 n-1) 個移動到 C
解漢諾塔最簡單的做法就是遞歸:
類似如何將大象裝進冰箱:1)將冰箱門打開;2)把大大象放進去;3)把冰箱門關(guān)上……
我們將所有的盤都在同一個桿上從大到小排列視為【完美狀態(tài)】,那么,目標就是將最大盤片為n的完美狀態(tài)從a桿移到b桿,套用裝大象的思路,這個問題同樣是三步:
1)把n-1的完美狀態(tài)移到另一個桿上;
2)把n移到目標桿上;
3)把n-1的完美狀態(tài)移到目標桿上。
如下:
文章標題:漢諾塔函數(shù)python,漢諾塔函數(shù)c語言
網(wǎng)站網(wǎng)址:http://aaarwkj.com/article14/dsiigde.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供建站公司、服務器托管、網(wǎng)站建設(shè)、手機網(wǎng)站建設(shè)、網(wǎng)站內(nèi)鏈、面包屑導航
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)