C語言第11講---函數(shù)的嵌套調用和遞歸調用.ppt

C語言第11講---函數(shù)的嵌套調用和遞歸調用.ppt

ID:61971369

大小:1.44 MB

頁數(shù):21頁

時間:2021-04-07

C語言第11講---函數(shù)的嵌套調用和遞歸調用.ppt_第1頁
C語言第11講---函數(shù)的嵌套調用和遞歸調用.ppt_第2頁
C語言第11講---函數(shù)的嵌套調用和遞歸調用.ppt_第3頁
C語言第11講---函數(shù)的嵌套調用和遞歸調用.ppt_第4頁
C語言第11講---函數(shù)的嵌套調用和遞歸調用.ppt_第5頁
資源描述:

《C語言第11講---函數(shù)的嵌套調用和遞歸調用.ppt》由會員上傳分享,免費在線閱讀,更多相關內容在教育資源-天天文庫。

1、5.4函數(shù)的嵌套調用和遞歸調用5.4.1函數(shù)的嵌套調用C語言不允許函數(shù)嵌套定義(單一性、獨立性)。但允許函數(shù)嵌套調用,即被調函數(shù)中又調用其它函數(shù)(見P133例5.11)。mian函數(shù)①調用squa函數(shù)s=s+squa(i)結束squa函數(shù)調用fact函數(shù)b=fact(k)fact函數(shù)②③④⑤⑥⑦⑧⑨兩層嵌套的執(zhí)行過程}}}#includedoublefact(intm){doublea=1;inti;for(i=1;i<=m;i++)a=a*i;returna;}doublesqua(intn){doubleb;intk;k=n*n;b=fact(k);ret

2、urnb;}voidmain(void){inti;doubles=0;for(i=1;i<=5;i++)s=s+squa(i);printf("s=%e",s);}5.4.2函數(shù)的遞歸調用(嵌套調用的特例)概念:函數(shù)直接或間接地自我調用稱為遞歸函數(shù)。intfun1(intx){…z=fun1(y);…}intfun1(intx)intfun2(intt){{……z=fun2(y);c=fun1(a);……}}直接引用自身間接引用自身遞歸在沒有控制條件的情況下是無窮的遞歸。#includevoidmain(void){printf("*****");m

3、ain();}只有通過控制條件,使遞歸調用終止,才能應用。#includevoidmain(void){charch;printf("******");ch=getchar();if(ch!='9')main();}遞歸舉例:求n!n!=1n=0或n=1n(n-1)!n>1f(n)=1n=0或n=1nf(n-1)n>1#includelonglfac(long);voidmain(void){longi,x;scanf("%ld",&i);x=lfac(i);printf("%ld",x);}longlfac(longn){if(n=

4、=0

5、

6、n==1)return1;elsereturn(n*lfac(n-1));}lfac(4)4*lfac(3)3*lfac(2)2*flac(1)2*13*2*14*3*2*1遞推回歸=n×(n-1)×(n-2)×…×3×2×1=n×(n-1)!5.5變量的作用域和存儲類型變量生存期:變量占用內存單元(活著)的時間。內存中供用戶使用的存儲空間:程序區(qū):存放程序代碼。數(shù)據(jù)區(qū):存放數(shù)據(jù),分為動態(tài)存儲區(qū)和靜態(tài)存儲區(qū)。5.5.1變量的生存期和作用域C語言中,定義變量應包含三個內容:①數(shù)據(jù)類型:變量占用內存空間的大小。如:int,float,char。②作用域:變量在程序中的有效區(qū)

7、域。③存儲類型:變量在內存中的存儲方式。存儲方式不同,變量占用內存時間不同。①靜態(tài)存儲區(qū):定義變量(程序編譯)時就分配內存單元,直到程序結束。生存期為整個程序運行期。②動態(tài)存儲區(qū):使用時才分配內存單元,使用完畢,立即釋放。生存期為函數(shù)調用期。變量的作用域:變量在程序中的可使用范圍(有效性)。1.局部變量定義在函數(shù)內部的變量。也稱為內部變量。放在動態(tài)區(qū)中,只有調用它的函數(shù)才能使用它。調用時才分配內存單元,調用結束,內存即刻被釋放,作用域:僅限于函數(shù)內部或復合語句內。生存期:函數(shù)調用期間。作用域可以是一個函數(shù)或一個復合語句,取決于定義變量的位置,可分為局部變量和全局變量。注意:不同

8、的函數(shù)或復合語句中可以使用相同的變量名。因為它們作用域不同,所以它們互不干預。即:同名,不同作用域的變量是不同的變量。例:(見p137例5.13)#includevoidfunc();main(){inty=10;printf(“1:y=%d”,y);func();printf(“2:y=%d”,y);}voidfunc(){intx=5;{intx=3;{intx=1;printf(“@x=%d”,x);}printf(“@@x=%d”,x);}printf(“@@@x=%d”,x);}運行結果:1:y=10@x=1@@x=3@@@x=5

9、2:y=102.全局變量定義在函數(shù)之外的變量。也稱為外部變量。放在靜態(tài)區(qū)中。作用域:從定義直到文件結束。生存期:在程序的整個執(zhí)行過程中。#includevoidadd(void);inta,b,c;voidmain(void){scanf(“%d,%d”,&a,&b);add();printf(“%d”,c);}voidadd(void){c=a+b;}外部變量作用域注意:1.任何函數(shù)對外部變量的修改都會影響其他函數(shù)對它的引用。2.當函數(shù)中出現(xiàn)和全局變量同名的局部變量時,局

當前文檔最多預覽五頁,下載文檔查看全文

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

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