確實(shí),初學(xué)C的時(shí)候,漢諾塔的遞歸看起來(lái)確實(shí)是比較神奇的程序。

創(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)力。可充分滿足這一群體相比中小企業(yè)更為豐富、高端、多元的互聯(lián)網(wǎng)需求。同時(shí)我們時(shí)刻保持專業(yè)、時(shí)尚、前沿,時(shí)刻以成就客戶成長(zhǎng)自我,堅(jiān)持不斷學(xué)習(xí)、思考、沉淀、凈化自己,讓我們?yōu)楦嗟钠髽I(yè)打造出實(shí)用型網(wǎng)站。
其中主要就在hanoi 這個(gè)遞歸函數(shù),傳的參數(shù)里面有一個(gè)n 代表是幾層遞歸。
如果n=1 代表只有一個(gè),move(one,three); 就是把第一個(gè)移到第三個(gè)就行了。否則
第一個(gè)柱子上有n個(gè)(n1) 要移到第三個(gè)。需要把上面的n-1個(gè)移到第二個(gè),最下面的一個(gè)移到第三個(gè),再把第二個(gè)柱子上的n-1個(gè)移到第三個(gè)。 要這三個(gè)步驟。
其中,第一個(gè),和第三個(gè)步驟,和本身其實(shí)是一樣的。
就是把n-1個(gè)移到第二個(gè),注意hanoi的參數(shù)
/* 定義hanoi函數(shù),將n個(gè)盤(pán)從one座借助two座,移到three座 */
two 即第二個(gè)參數(shù),這是表示用來(lái)借助的
就假設(shè)n=2 吧 hanoi(2,'A','B','C'); 變成了
hanoi(1,A,C,B); //這個(gè)代表A座上有一塊,需要借助C座,移到B座
A---C
hanoi(1,B,A,C); //這個(gè)代表B座上有一塊,需要借助A座,移到C座
最后會(huì)輸出
A--B
A--C
B--C
假設(shè)n=3 hanoi(3,'A','B','C');
hanoi(2,A,C,B); //這個(gè)代表A座上有兩塊,需要借助C座,移到B座
A---C
hanoi(2,B,A,C); //這個(gè)代表B座上有兩塊,需要借助A座,移到C座
A座上有兩塊,需要借助C座,移到B座 會(huì)輸出
A--C
A--B
C--B
B座上有兩塊,需要借助A座,移到C座 會(huì)輸出
B--A
B--C
A--C
1、打開(kāi)VC6.0軟件,新建一個(gè)C語(yǔ)言的項(xiàng)目:
2、接下來(lái)編寫(xiě)主程序,首先定義用來(lái)求階乘的遞歸函數(shù)以及主函數(shù)。在main函數(shù)里定義變量sum求和,調(diào)用遞歸函數(shù)fact(),并將返回值賦予sum,最后使用printf打印sum的結(jié)果,主程序就編寫(xiě)完了:
3、最后運(yùn)行程序,觀察輸出的結(jié)果。以上就是C語(yǔ)言使用遞歸求階乘的寫(xiě)法:
相當(dāng)于循環(huán),要有判斷條件,傳遞進(jìn)去的參數(shù)要變化,滿足條件調(diào)用自身,不滿足條件就開(kāi)始一層一層返回。簡(jiǎn)單例子:
int
f(int
i){
int
sum=0;
if(i0)
sum+=f(i-1);
return
sum;
}
main(){
int
a=10;
printf("%d",f(a));
}
沒(méi)有遞歸,你把自己想的太高端了
先執(zhí)行fun(d)也就是fun(1)
d=5,d=d+p=5+1=6
打印了6
然后執(zhí)行fun(a+fun(d))=fun(3+6)=fun(9)
d=6,d=d+p=6+9=15
打印了15
最后打印fun(a+fun(d))
等于15
是遞歸循環(huán)的錯(cuò)誤: y= n + y( n - 1 );
上式是錯(cuò)的!調(diào)用函數(shù)可以放到主函數(shù)后面,那沒(méi)關(guān)系的!我自己寫(xiě)了一個(gè)程序,如下:
#includestdio.h
int total(int n)
{if(n==1)
return(1);
else
return(n+total(n-1));
}
main()
{int n,s;
scanf("%d",n);
s=total(n);
printf("sum(%d)=%d\n",n,s);
}
名稱欄目:c語(yǔ)言線程中調(diào)用遞歸函數(shù) c語(yǔ)言中函數(shù)的遞歸調(diào)用
文章URL:http://chinadenli.net/article36/dodpisg.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站維護(hù)、網(wǎng)站排名、微信公眾號(hào)、小程序開(kāi)發(fā)、云服務(wù)器、移動(dò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)