版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領
文檔簡介
1、實驗題目:棧的應用實驗內(nèi)容:Hanoi塔問題。(要求4個盤子移動,輸出中間結果)實驗目的:(1)掌握棧的特點及其存儲方法;(2)掌握棧的常見算法以及程序實現(xiàn);(3)了解遞歸的工作過程。設計分析:Hanoi塔問題要求實現(xiàn)將一定數(shù)目n的直徑各不相同的盤子從A塔移動到C塔,盤子事先在A中已經(jīng)按直徑大小從小到大層疊好了,越往底層直徑越大,規(guī)定每次只能移動一個盤子,且不能出現(xiàn)小盤子上面有大盤子的情況??梢杂眠f歸的方法實現(xiàn)。先考慮最簡單的情況,假設
2、n=1,即只有一個盤子,此時便可直接將其從A移動到C;n=2時,小盤在上,大盤再下,此時可以借用中間的B塔來運輸,即先將小盤從A移至B,再將大盤從A移至C,最后將小盤從B移至C,這樣便不會出現(xiàn)小盤在下,大盤在上的情況;然而當n越來越大時,移動的次數(shù)就會越來越多,看起來好像很復雜,其實其中的基本思想很簡單:若A塔上有n個盤子,要將其全部移至C塔中,由于最底層盤的直徑最大,則就要將其上面的n1個盤子移至中間的B塔,再將最底層的盤子移至C塔上
3、,完成這個工作后,就會發(fā)現(xiàn)下一步就是將中間B塔上的n1個盤子移至C塔上,這就和第一步的工作類似了,只不過盤子少了一個,且所處的塔也發(fā)生了變化,此時可將A塔作為傳輸中介,將B塔上面的n2個盤子移至A塔,之后再將第n1個盤子移至C中,這樣重復進行下去就可以將它們?nèi)窟\輸過去。而對于第一步工作中將上面n1個盤子移至B,則又需要將其上n2個盤子移至此時視為傳輸中介的C,完成這一步又要將其上的n3個盤子移至B,像這樣層層遞歸進去,最終就會知道第一
4、個盤子及最上面直徑最小的盤子先移到何處,這即為遞歸出口,而后的盤子移動方案也都確定了,最終就可將所有的盤子按規(guī)則移至C塔,至此,Hanoi塔問題得以解決。源程序代碼:#includevoidMove(AB)printf(“%c%cn“AB)voidHanoi(intnABC)圖33當n=2時輸出移動過程如圖33所示,第一步A?B表示將A最上面的盤子(直徑小的)移至B,A?C則表示將A最上面的盤子(直徑大的)移至C,最后在將B最上面的盤子
5、移至C即可。圖34當n=3時輸出移動過程如圖34所示,此時需要7步完成整個過程,隨著n值的增大,移動的步數(shù)也隨之增多,總結可得移動步數(shù)S與n的關系為S=2n1。實驗總結:通過此次對Hanoi塔問題的探索與解決,我了解了遞歸算法的原理和功能,原本看起來很復雜的問題模型,用遞歸函數(shù)調(diào)用僅幾個簡單的程序語句就表達出來了,體現(xiàn)出遞歸算法的高效性,很多問題都可以用遞歸算法實現(xiàn),簡單的如求階乘,通過調(diào)用自身程序代碼實現(xiàn)遞歸。今后我會嘗試著用遞歸算法
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 漢諾塔問題課程設計
- 漢諾塔演示
- 漢諾塔課程設計--漢諾塔演示程序設計
- 漢諾塔問題的非遞歸新解法
- 漢諾塔課程設計--基于vc++的漢諾塔游戲設計
- 漢諾塔程序設計
- 漢諾塔圖性質研究.pdf
- 數(shù)據(jù)結構編程-漢諾塔
- 《新漢諾塔》課程設計
- 數(shù)據(jù)結構編程-漢諾塔
- 漢諾塔問題解決的認知過程分析.pdf
- 3done實體設計案例漢諾塔
- 基于java漢諾塔游戲設計與實現(xiàn)
- 3done實體設計案例漢諾塔
- mfc課程設計報告—漢諾塔演示系統(tǒng)
- 數(shù)據(jù)結構課程設計--漢諾塔游戲
- 漢諾塔java課程設計說明書
- 41657.39;漢諾塔39;作兒童解決問題能力動態(tài)測試的實證研究
- hanoi函數(shù)解析
- c++遞歸函數(shù)漢諾塔原理一步步詳解
評論
0/150
提交評論