第5章 模块的实现——函数.pptVIP

  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文档。上传文档
查看更多
第5章 模块的实现——函数

对静态局部变量的说明: 1. 静态局部变量属于静态存储类别,在静态存储区内分配存储单元。在程序整个运行期间都不释放。而自动变量(即动态局部变量)属于动态存储类别,占动态存储区空间而不占静态存储区空间,函数调用结束后即释放。 2. 对静态局部变量是在编译时赋初值的,即只赋初值一次,在程序运行时它已有初值。以后每次调用函数时不再重新赋初值而只是保留上次函数调用结束时的值。 3. 如在定义局部变量时不赋初值的话,则对静态局部变量来说,编译时自动赋初值0(对数值型变量)或空字符(对字符变量)。而对自动变量来说,如果不赋初值则它的值是一个不确定的值。 4. 虽然静态局部变量在函数调用结束后仍然存在,但其他函数不能引用它。 #include stdio.h void main() { int f(int); int a=2,i; for(i=0;i3;i++) printf(%d\n,f(a)); } int f(int a) { auto int b=0; static int c=3; b=b+1; c=c+1; return(a+b+c); } int a; void main() { … f2( ); … f1( ); } void f1( ) { int b; … f2( ); … } void f2( ) { static int c; … } 文件file1.c a作用域 b作用域 c作用域 main f2 main f1 f2 f1 main a生 存期 c生 存期 b生 存期 所以如果想能够访问到某个变量,必须在该变量的作用域范围内,且该变量的生命存在情况下才可以访问到,缺一不可。 5.6 函数的嵌套调用 ● C语言虽不允许嵌套定义函数,但可以嵌套 调用函数,即在一个函数定义中出现对另一个函数的调用。 例:计算s=1k+2k+3k+……+N k long f1(int n,int k) /*计算n的k次方*/ { long power=n; int i; for(i=1;ik;i++) power *= n; return power; } long f2(int n,int k) /*计算1到n的k次方之累加和*/ { long sum=0; int i; for(i=1;i=n;i++) sum += f1(i, k); return sum; } main() { int K,N; scanf(“%d %d”,K,N); printf(%d\n,f2(N,K)); getch(); } main( )函数 调用函数f2 输出结束 f2函数 f1函数 调用函数f1 5.7 函数的递归调用 定义:一个函数在它的函数体内,直接或间接地调用它自身。 【例】 int f ( int x) { int y,z; z=f(y) return(2*z); } 直接递归 为了防止递归调用无终止地进行,必须在函数内有终止递归调用的手段。常用的办法是加条件判断,满足某种条件后就不再作递归调用,然后逐层返回。 递推与递归 递推:由已知到未知(向前推,向后推) (1)10!; (2)排球运动员托球 (3)分苹果问题。 (4)Fibonacci数列 递归:由未知到已知(回推),再由已知到未知 (递推) 用递归的方法求10! 10! =? .. 9! .. 8! .. 7! 4! : 3! : 2! 1! 回推过程 递推过程 =1 已知 未知 未知 n!= 1 n*(n-1)! n=1 n1 #include stdio.h int f(int n) {if(n==

文档评论(0)

jiupshaieuk12 + 关注
实名认证
文档贡献者

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

版权声明书
用户编号:6212135231000003

1亿VIP精品文档

相关文档