- 1、本文档共40页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
[工学]函数--递归等
例 有一n级台阶的楼梯,上楼时可一步跨一级、两级、三级。 问登上这n级楼梯共有多少种跨级的方法? int a=9; main( ) { int b=2; fac(b); } extern int a; fac(int x) { int z; z=x?a; ….. } 文件f1.c 文件f2.c用到f1.c 中的a 2.在多个文件的程序中声明全局变量 程序设计 第七章 函 数 C 5)用static声明全局变量 static int a=9; main( ) { int b=2; fac(b); } extern int a; fac(int x) {int z; z=x?a; ….. } 文件f1.c 文件f2.c a只被f1.c中各函数用,其他文件是不能用的 文件f2.c想用f1.c 中的a 程序设计 第七章 函 数 C 7.10 内部函数和外部函数 函数本身在一个文件中为全局的,即一个文件中定义的函数可被该文件的所有其它函数调用。 一、内部函数–––只能在本文件中调用 但函数能否被其它文件中的函数所调用呢? 为此分为: 内部函数、外部函数 static 类型标识符 函数名(形参表) 程序设计 第七章 函 数 C 例: static int max (int a,int b) { ………. } 则该函数max只能被本文件中的其它函数引用,而不能被其它文件中的函数引用。 程序设计 第七章 函 数 C 既可被本文件中的函数调用,也可被其它文件中的函数调用。 extern 类型标识符 函数名(形参表) 一般系统在调用外部函数的函数中用extern说明外部函数。 二、外部函数 extern可省略 程序设计 第七章 函 数 C * 轻轻松松学习程序设计 程序设计 第七章 函 数 C 如何将程序设计“自顶向下、逐层分解”的设计理念,融入到程序设计当中? 重点 7.6 函数的递归调用 重点、难点 7.8 局部变量与全局变量 7.9 变量的存储类别 7.10 内部函数和外部函数 本次课程讨论的问题 程序设计 第七章 函 数 C 本次课程讨论的问题 递归的概念 递归程序举例 递归程序写法总结 进一步应用 优缺点探讨 程序设计 第七章 函 数 C 印度古老传说 开天辟地的神勃拉玛在一个庙里留下了三根金刚石的棒,第一根上面套着64个圆金片,最大的一个在底下,依次叠上去一个比一个小。规定:可用中间的一根棒作为帮助,每次只能搬一个,且小压大。64个金片移动次数为:18,446,744,073,709,551,615 ! §7.6 函数的递归调用 定义:函数直接或间接的调用自身叫函数的递归调用 f( ) 调f 调f2 调f1 f1( ) f2( ) 说明 C编译系统对递归函数的自调用次数没有限制 每调用函数一次,在内存堆栈区分配空间,用于存放函数变量、返回值等信息,所以递归次数过多,可能引起堆栈溢出 int f(int x) { int y,z; …… z=f(y); ……. return(2*z); } int f1(int x) { int y,z; …… z=f2(y); ……. return(2*z); } int f2(int t) { int a,c; …… c=f1(a); ……. return(3+c); } 程序设计 第七章 函 数 C 程序设计 第七章 函 数 C 想一想: 函数的递归调用一般用于什么情况? 你能举出几个例子吗? 程序设计 第七章 函 数 C 例: 用递归方法求n!。 n!= 1 n=0,1 n *(n-1)! n1 main( ) { int i; for(i=1;i=25;i++) printf(%d!=%-24.0f\n,i,fac(i)); } do
文档评论(0)