C語言函數(shù)遞歸調(diào)用.ppt

ID:59775781

大?。?.19 MB

頁數(shù):9頁

時間:2020-11-24

C語言函數(shù)遞歸調(diào)用.ppt_第1頁
C語言函數(shù)遞歸調(diào)用.ppt_第2頁
C語言函數(shù)遞歸調(diào)用.ppt_第3頁
C語言函數(shù)遞歸調(diào)用.ppt_第4頁
C語言函數(shù)遞歸調(diào)用.ppt_第5頁
資源描述:

《C語言函數(shù)遞歸調(diào)用.ppt》由會員上傳分享,免費在線閱讀,更多相關(guān)內(nèi)容在應(yīng)用文檔-天天文庫。

1、第6章函數(shù)函數(shù)的遞歸調(diào)用函數(shù)的遞歸調(diào)用在調(diào)用一個函數(shù)的過程中,出現(xiàn)直接或間接地調(diào)用該函數(shù)本身,稱為函數(shù)的遞歸調(diào)用。f函數(shù)調(diào)用f函數(shù)f1函數(shù)調(diào)用f2函數(shù)f2函數(shù)調(diào)用f1函數(shù)intf(intx){intz;if(x==0)return1;if(x>0)z=f(x-1);elseif(x<0)z=f(x+1);return(2*z);}例1:函數(shù)的遞歸調(diào)用#includevoidrecur(int);intmain(void){recur(1);return0;}voidrecur(intn)//遞歸函數(shù){

2、printf("第%d級調(diào)用",n);//1if(n<4){recur(n+1);//遞歸}printf("第%d級返回",n);//2}輸出結(jié)果:第1級調(diào)用第2級調(diào)用第3級調(diào)用第4級調(diào)用第4級返回第3級返回第2級返回第1級返回解析:從結(jié)果可以看出,1和2相當(dāng)于循環(huán)體,當(dāng)符合測試條件(即n<4)時,#1部分循環(huán);當(dāng)測試條件為false時,2部分循環(huán)。在遞歸函數(shù)中,位于遞歸調(diào)用之前的語句(即1部分),按被調(diào)函數(shù)(即recur())的順序執(zhí)行;位于遞歸調(diào)用之后的語句(即2部分),按被調(diào)函數(shù)相反的順序執(zhí)行。每級函數(shù)調(diào)

3、用都有自己的變量,遞歸調(diào)用就相當(dāng)于又從頭開始執(zhí)行函數(shù)的代碼。每次函數(shù)調(diào)用都會返回一次,并且按順序逐級返回遞歸。例2:函數(shù)的遞歸調(diào)用#includeintfun(intn)//定義函數(shù){if(n==0

4、

5、n==1){n=1;}else{n=n*fun(n-1);//遞歸調(diào)用函數(shù)}returnn;}intmain(){inti,j;printf("請輸入一個數(shù)字:");scanf("%d",&i);j=fun(i);printf("它的階乘為:%d",j);}例3:函數(shù)的遞歸調(diào)用有3個人坐在一起,問第

6、3個人多少歲?他說比第2個人大2歲。問第2個人多少歲?他說比第1個人大2歲。最后問第1個人,他說是10歲。請問第3個人多大?分析:age(3)=age(2)+2;age(2)=age(1)+2;age(1)=10;歸納:n=1age(n)=10n>1age(n)=age(n-1)+2程序如下:#includeintage(intn){intc;if(n==1){c=10;}elseif(n>1){c=age(n-1)+2;}returnc;}intmain(void) {printf(“%d”,age

7、(3));return0;}程序執(zhí)行過程如下:intmain(void) {printf(“%d”,age(3));}intage(3){intc;c=age(2)+2;returnc;}intage(2){intc;c=age(1)+2;returnc;}intage(1){intc;c=10;returnc;}例4:函數(shù)的遞歸調(diào)用課堂習(xí)題#includevoidfunc1(inti); voidfunc2(inti); charst[]="hello,friend!";voidfunc1(inti

8、) {printf("%c",st[i]); if(i<3){i+=2;func2(i);} }voidfunc2(inti) {printf("%c",st[i]); if(i<3){i+=2;func1(i);} }intmain(void) {inti=0;func1(i);return0;}A)helloB)helC)hloD)hlm1.下列程序執(zhí)行后的輸出結(jié)果是()2.有如下程序:#includeintfunc(inta,intb){return(a+b);}intmain(void){in

9、tx=2,y=5,z=8,r; r=func(func(x,y),z); printf(“%d”,r); return0;}該程序的輸出的結(jié)果是()。A)12B)13C)14D)153.下面程序的輸出結(jié)果是()。#includeintf(inta,intb);intmain(void){inti=2,p; p=f(i,i+1); printf(“%d”,p);return0;}intf(inta,intb){intc; if(a>b){c=1;} elseif(a==b){c=0;}else{c=

10、-1;} returnc;}A)-1B)0C)1D)2

當(dāng)前文檔最多預(yù)覽五頁,下載文檔查看全文

此文檔下載收益歸作者所有

當(dāng)前文檔最多預(yù)覽五頁,下載文檔查看全文
溫馨提示:
1. 部分包含數(shù)學(xué)公式或PPT動畫的文件,查看預(yù)覽時可能會顯示錯亂或異常,文件下載后無此問題,請放心下載。
2. 本文檔由用戶上傳,版權(quán)歸屬用戶,天天文庫負責(zé)整理代發(fā)布。如果您對本文檔版權(quán)有爭議請及時聯(lián)系客服。
3. 下載前請仔細閱讀文檔內(nèi)容,確認文檔內(nèi)容符合您的需求后進行下載,若出現(xiàn)內(nèi)容與標(biāo)題不符可向本站投訴處理。
4. 下載文檔時可能由于網(wǎng)絡(luò)波動等原因無法下載或下載錯誤,付費完成后未能成功下載的用戶請聯(lián)系客服處理。
关闭