好像麻煩 沒什么作用??!階乘我有for循環(huán)照樣實現(xiàn)又簡單!
為巍山等地區(qū)用戶提供了全套網(wǎng)頁設計制作服務,及巍山網(wǎng)站建設行業(yè)解決方案。主營業(yè)務為做網(wǎng)站、成都網(wǎng)站建設、巍山網(wǎng)站設計,以傳統(tǒng)方式定制建設網(wǎng)站,并提供域名空間備案等一條龍服務,秉承以專業(yè)、用心的態(tài)度為用戶提供真誠的服務。我們深信只要達到每一位用戶的要求,就會得到認可,從而選擇與我們長期合作。這樣,我們也可以走得更遠!
int f(int n)//實現(xiàn)階乘參數(shù)
{
int tem = 1;
for(;n0;n--)
{
tem*=n;
}
return tem;
}
我解釋下具體執(zhí)行過程:
printf("%d!=%ld\n",num,mul(num));
這里調(diào)用了mul(num)方法,第一個值是5,進入方法后,
if(51) x=5*mul(5-1);
這里又調(diào)用了一次方法,
mul(5-1)
這里就是遞歸調(diào)用了,需要把4的值帶入方法又執(zhí)行一次,
變成:if(41) x=4*mul(4-1);
這里又調(diào)用了一次方法,
mul(4-1)
依次類推為:if(31) x=3*mul(3-1);
if(21) x=2*mul(2-1);
這里看懂了沒,遞歸函數(shù)關鍵字在“遞”和“歸”,相當于循環(huán),一直到條件不滿足時在“歸”,一步步return直到第一個調(diào)用的mul方法。在return主函數(shù)。
也就是從最后一次調(diào)用
mul(2-1)時
n的值為1了,執(zhí)行else語句,結(jié)束“遞”方法操作,return語句,返回X=1,那么接下來變?yōu)?/p>
if(21) x=2*1,返回X=2,接下來變?yōu)椋?/p>
if(31) x=3*2,返回X=6,接下來變?yōu)椋?/p>
if(41) x=4*6,返回X=24,接下來變?yōu)椋?/p>
if(51) x=5*24,返回X=120 結(jié)束遞歸調(diào)用。
希望你能看懂,還有問題在補充吧!
遞歸函數(shù)通常用來解決結(jié)構(gòu)自相似的問題。所謂結(jié)構(gòu)自相似,是指構(gòu)成原問題的子問題與原問題在結(jié)構(gòu)上相似,可以用類似的方法解決。具體地,整個問題的解決,可以分為兩部分:第一部分是一些特殊情況,有直接的解法;第二部分與原問題相似,但比原問題的規(guī)模小。實際上,遞歸是把一個不能或不好解決的大問題轉(zhuǎn)化為一個或幾個小問題,再把這些小問題進一步分解成更小的問題,直至每個小問題都可以直接解決。因此,遞歸有兩個基本要素:
(1)邊界條件:確定遞歸到何時終止,也稱為遞歸出口。
(2)遞歸模式:大問題是如何分解為小問題的,也稱為遞歸體。遞歸函數(shù)只有具備了這兩個要素,才能在有限次計算后得出結(jié)果。
遞歸就是某個函數(shù)直接或間接地調(diào)用了自身,這種調(diào)用方式叫做遞歸調(diào)用。說白了,還是函數(shù)調(diào)用。既然是函數(shù)調(diào)用,那么就有一個雷打不動的原則:所有被調(diào)用的函數(shù)都將創(chuàng)建一個副本,各自為調(diào)用者服務,而不受其他函數(shù)的影響。
網(wǎng)站名稱:c語言遞歸函數(shù)的用途 c語言函數(shù)遞歸
網(wǎng)址分享:http://jinyejixie.com/article40/dosdhho.html
成都網(wǎng)站建設公司_創(chuàng)新互聯(lián),為您提供商城網(wǎng)站、外貿(mào)網(wǎng)站建設、網(wǎng)站設計、定制網(wǎng)站、手機網(wǎng)站建設、品牌網(wǎng)站設計
聲明:本網(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)