這是一個(gè)遞歸調(diào)用。此時(shí),n=3,a=A,c=B,b=C。要清楚,A,B,C代表的意義。A代表初始柱子,B代表輔助柱子,C代表目標(biāo)柱子。而a代表第一根柱子,b代表第二根柱子,c代表第三根柱子。這是不一樣的。
成都創(chuàng)新互聯(lián)公司是一家集網(wǎng)站建設(shè),安岳企業(yè)網(wǎng)站建設(shè),安岳品牌網(wǎng)站建設(shè),網(wǎng)站定制,安岳網(wǎng)站建設(shè)報(bào)價(jià),網(wǎng)絡(luò)營(yíng)銷,網(wǎng)絡(luò)優(yōu)化,安岳網(wǎng)站推廣為一體的創(chuàng)新建站企業(yè),幫助傳統(tǒng)企業(yè)提升企業(yè)形象加強(qiáng)企業(yè)競(jìng)爭(zhēng)力??沙浞譂M足這一群體相比中小企業(yè)更為豐富、高端、多元的互聯(lián)網(wǎng)需求。同時(shí)我們時(shí)刻保持專業(yè)、時(shí)尚、前沿,時(shí)刻以成就客戶成長(zhǎng)自我,堅(jiān)持不斷學(xué)習(xí)、思考、沉淀、凈化自己,讓我們?yōu)楦嗟钠髽I(yè)打造出實(shí)用型網(wǎng)站。
第一步,n-1個(gè)金片從a經(jīng)c移動(dòng)到b 不是“一步”完成的,而是“一個(gè)階段”(一次遞歸調(diào)用)完成的。在假定它完成的基礎(chǔ)上,第二步就可以完成了。
算法分析(遞歸算法):實(shí)現(xiàn)這個(gè)算法可以簡(jiǎn)單分為三個(gè)步驟:把n-1個(gè)盤子由A 移到 B;把第n個(gè)盤子由 A移到 C;把n-1個(gè)盤子由B 移到 C。
注意:我們?cè)诶糜?jì)算機(jī)求漢諾塔問題時(shí),必不可少的一步是對(duì)整個(gè)實(shí)現(xiàn)求解進(jìn)行算法分析。到目前為止,求解漢諾塔問題最簡(jiǎn)單的算法還是同過遞歸來(lái)求。
printf(請(qǐng)輸入漢諾塔的高度:);scanf(%d,&n);printf(移動(dòng)方案是:(系數(shù)代表第幾個(gè)盤子 從上往下計(jì)數(shù))\n);Hanoi(A,B,C,n);return 0;} VC 6.0下編譯成功!這是典型的遞歸用法。
1、第一步,n-1個(gè)金片從a經(jīng)c移動(dòng)到b 不是“一步”完成的,而是“一個(gè)階段”(一次遞歸調(diào)用)完成的。在假定它完成的基礎(chǔ)上,第二步就可以完成了。
2、input the number of disks:3 the step to moving 3 disks A--C A--B C--B A--C B--A B--C A--C 紙筆畫了我老半天。。
3、three)來(lái)實(shí)現(xiàn)的,我這樣寫只是便于理解遞歸過程,不知道是否理解?*/ } } void move(char x,char y){ printf(%c--%c\n,x,y);} /*move 函數(shù)只是起到一個(gè)打印步驟的作用,one對(duì)應(yīng)‘a(chǎn)’,。
4、最后把剩下的盤子移動(dòng)到目標(biāo)柱子上。這樣,然而,完成第一步和第三步也同樣是一個(gè)移動(dòng)n-1個(gè)盤子的漢諾塔問題。于是,遞歸調(diào)用在這里不可避免。程序你已經(jīng)寫的很清楚,給你解釋一下?,F(xiàn)把你的程序畫上行以便說(shuō)明。
5、也就是else中的第一個(gè)hanoi)的結(jié)束,接著在再次調(diào)用move函數(shù),在接下來(lái)就又是上面的過程了,移植到所有的遞歸都結(jié)束,才會(huì)重新返回main函數(shù)。
6、確實(shí),初學(xué)C的時(shí)候,漢諾塔的遞歸看起來(lái)確實(shí)是比較神奇的程序。其中主要就在hanoi 這個(gè)遞歸函數(shù),傳的參數(shù)里面有一個(gè)n 代表是幾層遞歸。如果n=1 代表只有一個(gè),move(one,three); 就是把第一個(gè)移到第三個(gè)就行了。
hanoi(2,a,b,c);由于21因此進(jìn)入了遞歸的環(huán)節(jié)中。
第一,把a(bǔ)上的n-1個(gè)盤通過c移動(dòng)到b。第二,把a(bǔ)上的最下面的盤移到c。第三,因?yàn)閚-1個(gè)盤全在b上了,所以把b當(dāng)做a重復(fù)以上步驟就好了。
解決漢諾塔的基本思想是先把n個(gè)盤子除了最下面的盤子以外的所有盤子從第一根柱子(初始柱子)移動(dòng)到中間那個(gè)柱子上(輔助柱子),然后把最下面的盤子移動(dòng)到最后一根柱子上(目標(biāo)柱子)。最后把剩下的盤子移動(dòng)到目標(biāo)柱子上。
printf(請(qǐng)輸入漢諾塔的高度:);scanf(%d,&n);printf(移動(dòng)方案是:(系數(shù)代表第幾個(gè)盤子 從上往下計(jì)數(shù))\n);Hanoi(A,B,C,n);return 0;} VC 6.0下編譯成功!這是典型的遞歸用法。
Hanoi塔問題, 算法分析如下,設(shè)A上有n個(gè)盤子。如果n=1,則將圓盤從A直接移動(dòng)到C。
第一步,n-1個(gè)金片從a經(jīng)c移動(dòng)到b 不是“一步”完成的,而是“一個(gè)階段”(一次遞歸調(diào)用)完成的。在假定它完成的基礎(chǔ)上,第二步就可以完成了。
網(wǎng)頁(yè)名稱:c語(yǔ)言漢諾塔的遞歸函數(shù) 漢諾塔用遞歸實(shí)現(xiàn)
URL地址:http://www.rwnh.cn/article12/dcchcgc.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供搜索引擎優(yōu)化、品牌網(wǎng)站制作、云服務(wù)器、用戶體驗(yàn)、微信公眾號(hào)、營(yíng)銷型網(wǎng)站建設(shè)
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)