C语言第11讲---函数的嵌套调用和递归调用.ppt

C语言第11讲---函数的嵌套调用和递归调用.ppt

ID:61971369

大小:1.44 MB

页数:21页

时间:2021-04-07

C语言第11讲---函数的嵌套调用和递归调用.ppt_第1页
C语言第11讲---函数的嵌套调用和递归调用.ppt_第2页
C语言第11讲---函数的嵌套调用和递归调用.ppt_第3页
C语言第11讲---函数的嵌套调用和递归调用.ppt_第4页
C语言第11讲---函数的嵌套调用和递归调用.ppt_第5页
资源描述:

《C语言第11讲---函数的嵌套调用和递归调用.ppt》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、5.4函数的嵌套调用和递归调用5.4.1函数的嵌套调用C语言不允许函数嵌套定义(单一性、独立性)。但允许函数嵌套调用,即被调函数中又调用其它函数(见P133例5.11)。mian函数①调用squa函数s=s+squa(i)结束squa函数调用fact函数b=fact(k)fact函数②③④⑤⑥⑦⑧⑨两层嵌套的执行过程}}}#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函数的递归调用(嵌套调用的特例)概念:函数直接或间接地自我调用称为递归函数。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变量的作用域和存储类型变量生存期:变量占用内存单元(活着)的时间。内存中供用户使用的存储空间:程序区:存放程序代码。数据区:存放数据,分为动态存储区和静态存储区。5.5.1变量的生存期和作用域C语言中,定义变量应包含三个内容:①数据类型:变量占用内存空间的大小。如:int,float,char。②作用域:变量在程序中的有效区

7、域。③存储类型:变量在内存中的存储方式。存储方式不同,变量占用内存时间不同。①静态存储区:定义变量(程序编译)时就分配内存单元,直到程序结束。生存期为整个程序运行期。②动态存储区:使用时才分配内存单元,使用完毕,立即释放。生存期为函数调用期。变量的作用域:变量在程序中的可使用范围(有效性)。1.局部变量定义在函数内部的变量。也称为内部变量。放在动态区中,只有调用它的函数才能使用它。调用时才分配内存单元,调用结束,内存即刻被释放,作用域:仅限于函数内部或复合语句内。生存期:函数调用期间。作用域可以是一个函数或一个复合语句,取决于定义变量的位置,可分为局部变量和全局变量。注意:不同

8、的函数或复合语句中可以使用相同的变量名。因为它们作用域不同,所以它们互不干预。即:同名,不同作用域的变量是不同的变量。例:(见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.全局变量定义在函数之外的变量。也称为外部变量。放在静态区中。作用域:从定义直到文件结束。生存期:在程序的整个执行过程中。#includevoidadd(void);inta,b,c;voidmain(void){scanf(“%d,%d”,&a,&b);add();printf(“%d”,c);}voidadd(void){c=a+b;}外部变量作用域注意:1.任何函数对外部变量的修改都会影响其他函数对它的引用。2.当函数中出现和全局变量同名的局部变量时,局

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。