c語言遞歸函數(shù)實例 c語言遞歸函數(shù)的例題

C語言中自我遞歸的幾個例子

遞歸主要元素:入口,遞歸和結(jié)束。在定義遞歸函數(shù)時將這三個元素考慮進(jìn)去就行;如: double callnext(int n)

網(wǎng)站建設(shè)哪家好,找創(chuàng)新互聯(lián)!專注于網(wǎng)頁設(shè)計、網(wǎng)站建設(shè)、微信開發(fā)、重慶小程序開發(fā)、集團(tuán)企業(yè)網(wǎng)站建設(shè)等服務(wù)項目。為回饋新老客戶創(chuàng)新互聯(lián)還提供了鄲城免費(fèi)建站歡迎大家使用!

{

if(n1) return callnext(n-1)+3;

else return 1;

}

int main()

{

int m;

scanf("%d",m);

printf("result=%f",callnext(m));

return 0;

}

入口:callnext(m);遞歸:if(n1) return callnext(n-1)+3中的callnext(n-1);結(jié)束:else return 1;整個執(zhí)行流程:callnext(m) 調(diào)用 callnext(m-1);callnext(m-1)調(diào)用callnext(m-1-1)。。。

callnext(2)調(diào)用callnext(1);callnext(1)=1;結(jié)束;

c語言 函數(shù)遞歸調(diào)用的簡單例子

舉一個用遞歸調(diào)用函數(shù)求輸入非負(fù)整數(shù)的階乘的例子,如下:

//#include?"stdafx.h"http://If?the?vc++6.0,?with?this?line.

#include?"stdio.h"

int?fact(int?n){

if(n==1?||?n==0)?return?1;

else?return?n*fact(n-1);

}

int?main(void){

int?x;

while(1){

printf("Input?x(int?12=x=0)...\nx=");

if(scanf("%d",x),x=0??x=12)//x12時會使結(jié)果溢出

break;

printf("Error,redo:?");

}

printf("%d!?=?%d\n",x,fact(x));

return?0;

}

c語言中,什么是函數(shù)的遞歸,能舉個例子么

所謂遞歸,說的簡單點(diǎn),就是函數(shù)自己調(diào)用自己,然后在某個特定條件下。結(jié)束這種自我調(diào)用。

如果不給予這個結(jié)束條件,就成了無限死循環(huán)了。這樣這個遞歸也就毫無意義了。

如下面問題

1 1 2 3 5 8 13 21 ........n

分析可以看出, i 表示第幾個數(shù), n 表示該數(shù)的值

當(dāng)i = 1 時, n = 1;

當(dāng)i = 2 時, n = 1;

當(dāng)i = 3 時 n = i1 + i2;

當(dāng)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ù)了。

何時考慮使用遞歸。

當(dāng)你分析一個問題的時候,發(fā)現(xiàn)這個問題,是一個自我循環(huán)時,而且這個自我循環(huán)到一個給定值,就可以終止的時候,你就快要考慮遞歸了。

C語言中遞歸調(diào)用的實例以及講解。

下面演示一個斐波那契數(shù)列前N項和#include stdio.h

#define COL 10 //一行輸出10個

long scan()

{ //輸入求fibonacci函數(shù)的第N項

int n;

printf("Input the N = ");

scanf("%d",n);

return n;

}

long fibonacci(int n)

{ //fibonacci函數(shù)的遞歸函數(shù)

if (0==n||1==n) { //fibonacci函數(shù)遞歸的出口

return 1;

}

else {

return fibonacci(n-1)+fibonacci(n-2);

//反復(fù)遞歸自身函數(shù)直到碰到出口處再返回就能計算出第n項的值

}

}

int main(void)

{

int i,n;

n = scan();

printf("Fibonacci數(shù)列的前%d項\n", n);

for (i=0; in;) //輸出fibonacci函數(shù)前n項每項的值

{

printf("%-10ld",fibonacci(i++)); //調(diào)用遞歸函數(shù)并且打印出返回值

if(i%COL==0)

{ //若對COL取余等于0就換行,也就是控制每行輸出多少個,

//而COL=10就是每行輸出10個

printf("\n");

}

}

printf("\n");

return 0;

}

新聞標(biāo)題:c語言遞歸函數(shù)實例 c語言遞歸函數(shù)的例題
URL分享:http://muchs.cn/article14/dojhsde.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供企業(yè)網(wǎng)站制作、全網(wǎng)營銷推廣、搜索引擎優(yōu)化、網(wǎng)站維護(hù)、微信公眾號

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

小程序開發(fā)