相當于循環(huán),要有判斷條件,傳遞進去的參數(shù)要變化,滿足條件調(diào)用自身,不滿足條件就開始一層一層返回。簡單例子:

創(chuàng)新互聯(lián)建站于2013年成立,先為洪澤等服務(wù)建站,洪澤等地企業(yè),進行企業(yè)商務(wù)咨詢服務(wù)。為洪澤企業(yè)網(wǎng)站制作PC+手機+微官網(wǎng)三網(wǎng)同步一站式服務(wù)解決您的所有建站問題。
int
f(int
i){
int
sum=0;
if(i0)
sum+=f(i-1);
return
sum;
}
main(){
int
a=10;
printf("%d",f(a));
}
int main(int argc, char *argv[])
main參數(shù) argc 是保存命令的個數(shù),argv 保存命令
例如 test -a -b -c
test程序啟動時接受了 4個參數(shù)(默認 test也屬于一個參數(shù) ),個數(shù)保存到argc -a -b -c 保存到argv
遞歸。我覺得你被這個名氣搞暈了而已,其實就很簡單,在某個函數(shù)中再調(diào)用這個函數(shù),就叫遞歸
例如
int test(int a)
{
return test(a+1); //死循環(huán) ,不斷進入test函數(shù) a不斷加1。。。。
} //你可以理解為一個for 或者while的另一種形式,反正就是循環(huán),加判斷以停止遞歸調(diào)用
所謂遞歸,說的簡單點,就是函數(shù)自己調(diào)用自己,然后在某個特定條件下。結(jié)束這種自我調(diào)用。
如果不給予這個結(jié)束條件,就成了無限死循環(huán)了。這樣這個遞歸也就毫無意義了。
如下面問題
1 1 2 3 5 8 13 21 ........n
分析可以看出, i 表示第幾個數(shù), n 表示該數(shù)的值
當i = 1 時, n = 1;
當i = 2 時, n = 1;
當i = 3 時 n = i1 + i2;
當i = 4 時 n = i2 + i3
所以可以寫個函數(shù)
int fun(int n) // 這里的n代表第幾個數(shù)
{
if(1 == n || 2 == n) // 第一個數(shù)
{
return 1;
}
else
{
return fun(n - 1) + fun(n - 2); // 這里就是自己調(diào)用自己,形成循環(huán)自我調(diào)用。
}
}
注: 以上代碼只是用來演示遞歸,不包含錯誤校驗。
在實際生產(chǎn)過程中。該代碼不夠健壯。
如此,就完成了遞歸。你就可以求得第n個數(shù)了。
何時考慮使用遞歸。
當你分析一個問題的時候,發(fā)現(xiàn)這個問題,是一個自我循環(huán)時,而且這個自我循環(huán)到一個給定值,就可以終止的時候,你就快要考慮遞歸了。
程序調(diào)用自身的編程技巧稱為遞歸( recursion)?!?/p>
一個過程或函數(shù)在其定義或說明中有直接或間接調(diào)用自身的一種方法,它通常把一個大型復雜的問題層層轉(zhuǎn)化為一個與原問題相似的規(guī)模較小的問題來求解,遞歸策略只需少量的程序就可描述出解題過程所需要的多次重復計算,大大地減少了程序的代碼量。遞歸的能力在于用有限的語句來定義對象的無限集合。一般來說,遞歸需要有邊界條件、遞歸前進段和遞歸返回段。當邊界條件不滿足時,遞歸前進;當邊界條件滿足時,遞歸返回?!?/p>
注意:
(1) 遞歸就是在過程或函數(shù)里調(diào)用自身;
(2) 在使用遞歸策略時,必須有一個明確的遞歸結(jié)束條件,稱為遞歸出口
假設(shè)n=9
1判斷n=9非0,把n=9壓入棧中,執(zhí)行ttor(4);棧中為9
2判斷n=4非0,把n=4壓入棧中,執(zhí)行ttor(2);棧中為9,4
3判斷n=2非0,把n=2壓入棧中,執(zhí)行ttor(1);棧中為9,4,2
4判斷n=1非0,把n=1壓入棧中,執(zhí)行ttor(0);棧中為9,4,2,1
5判斷n=0不滿足條件,函數(shù)結(jié)束
6從棧中取出n=1,執(zhí)行ttor(1)的剩余部分,輸出1
7從棧中取出n=2,執(zhí)行ttor(2)的剩余部分,輸出0
8從棧中取出n=4,執(zhí)行ttor(4)的剩余部分,輸出0
9從棧中取出n=9,執(zhí)行ttor(9)的剩余部分,輸出1
額,抽象的說就是解決一個問題時重復使用一個動作,那么就可以用遞歸的方式來解決,告訴電腦重復做這個動作就行.結(jié)合看一些遞歸算法的簡單程序,應該好懂些.
新聞名稱:c語言函數(shù)遞歸講解 c語言函數(shù)遞歸調(diào)用簡單例子
網(wǎng)頁路徑:http://www.jbt999.com/article16/hjjodg.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站導航、小程序開發(fā)、面包屑導航、網(wǎng)站制作、微信小程序、微信公眾號
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:[email protected]。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)