C语言函数的嵌套调用和递归调用.pptxVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
C语言函数的嵌套调用和递归调用会计学第1页/共21页5.4.2 函数的递归调用(嵌套调用的特例 ) 概念:函数直接或间接地自我调用称为递归函数。int fun1(int x){ … z=fun1(y); …}int fun1(int x) int fun2(int t){ { … … z=fun2(y); c=fun1(a); … … } } 直接引用自身间接引用自身递归在没有控制条件的情况下是无穷的递归。#includevoid main(void){ char ch ; printf(******\n ) ; ch=getchar() ; if(ch!=9) main() ;}#includevoid main(void){ printf(*****\n); main();}只有通过控制条件,使递归调用终止,才能应用。第2页/共21页递归举例:求 n!= n×(n-1)×(n-2)× … × 3×2×1=n×(n-1)!1 n=0或n=11 n=0或n=1n!=f(n)=n(n-1)! n1nf(n-1) n1#include stdio.hlong lfac(long);void main(void){ long i,x; scanf(%ld,i); x=lfac(i); printf(\n%ld,x);}long lfac(long n){ if (n==0||n==1) return 1; else return(n*lfac(n-1));}lfac(4)4*lfac(3)3*lfac(2)2*flac(1)递推2*14*3*2*13*2*1回归第3页/共21页 变量的作用域和存储类型 C语言中,定义变量应包含三个内容: ① 数据类型:变量占用内存空间的大小。如:int, float, char。 ② 作用域:变量在程序中的有效区域。 ③ 存储类型:变量在内存中的存储方式。存储方式不同,变量占用内存时间不同。 变量的生存期和作用域变量生存期:变量占用内存单元(活着)的时间。 内存中供用户使用的存储空间: 程序区:存放程序代码。 数据区:存放数据,分为动态存储区和静态存储区。 ① 静态存储区:定义变量(程序编译)时就分配内存单元,直到程序结束。生存期为整个程序运行期。 ② 动态存储区:使用时才分配内存单元,使用完毕,立即释放。生存期为函数调用期。第4页/共21页变量的作用域:变量在程序中的可使用范围(有效性)。 作用域可以是一个函数或一个复合语句,取决于定义变量的位置,可分为局部变量和全局变量。 1. 局部变量 定义在函数内部的变量。也称为内部变量。放在动态区中,只有调用它的函数才能使用它。调用时才分配内存单元,调用结束,内存即刻被释放, 作用域:仅限于函数内部或复合语句内。 生存期:函数调用期间。注意: 不同的函数或复合语句中可以使用相同的变量名。因为它们作用域不同,所以它们互不干预。即:同名,不同作用域的变量是不同的变量。 第5页/共21页例: (见p137 例) void func() { int x=5; { int x=3; { int x=1; printf(“@ x=%d\n”,x); } printf(“@@ x=%d\n”,x); } printf(“@@@ x=%d\n”,x); } #include void func(); main() { int y=10; printf(“1:y=%d\n”,y); func(); printf(“2:y=%d\n”,y);}1: y=10@ x=1@@ x=3@@@ x=52: y=10运行结果:第6页/共21页2. 全局变量 定义在函数之外的变量。也称为外部变量。放在静态区中。作用域:从定义直到文件结束。 生存期:在程序的整个执行过程中。#include stdio.hvoid add(void);int a,b,c;void main(void){ scanf(“%d,%d”,a,b); add( ); printf(“%d”,c);}void add(void){ c=a+b; }外部变量作用域注意:1. 任何函数对外部变量的修改都会影响其他函数对它的引用。2. 当函数中出现和全局变量同名的局部变量时,局部变量优先。第7页/共21页 变量的存储类型变量的作用域不同,本质上是变量的存储类型不同: 静态存储:程序编译时就分配内存单元,直到程序结

文档评论(0)

kuailelaifenxian + 关注
官方认证
文档贡献者

该用户很懒,什么也没介绍

认证主体太仓市沙溪镇牛文库商务信息咨询服务部
IP属地上海
统一社会信用代码/组织机构代码
92320585MA1WRHUU8N

1亿VIP精品文档

相关文档