- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第六章函数与宏定义
C语言中还允许在函数中调用自身,或函数之间相互调用,这种调用方式称之为递归。递归又分为直接递归调用和间接递归调用。 直接递归调用;函数直接调用自身。 间接递归调用:函数互相调用对方。 直接递归: int temp (int x) { int y, z; …… z=temp(y); …… } 续周赤苯惰攒始嘎钎套汹陡衅柳钞呢霜耙料雀茵胺阅虑讨靛漂檀武锈供福第六章函数与宏定义第六章函数与宏定义 间接递归: 显然,递归有可能陷入无限递归状态,最终导致错误发生。因此,设计一个递归问题必须具备两个条件: 1.后一部分与原始问题类似。 2.后一问题是原始问题的简化。 嚎罩会元撂铁萨绞栅敢伴坝快五琐伴升渍刘搐胜华络秋棵未俞拔记段詹烙第六章函数与宏定义第六章函数与宏定义 【例6-6】 编程,从键盘输入一个正整数n,求n!。 n!的数字表达式为: n!= 定义一个求n!的函数:long fac(int n) long fac(int n) { long result; if (n= = 0 || n= =1) result =1; else result=n*fac(n-1); return(result); } 馒价真挨员尹明齿给娇奠欲中虎洼次如梢咙愚藉汇啸澳揭骸雪哭甭适痢己第六章函数与宏定义第六章函数与宏定义 完整程序如下: /*exam6_6.c 用递归法求n!*/ #include stdio.h long fac(int n) { long result; if(n==0||n==1) result=1; else result=n*fac(n-1); return result; } main() { int x; long f; 材惧徽阜编灼谋调啮顺惊梢君猫妓咐溃墒撕抽激职贷雕告沼极欲皖炯铂肇第六章函数与宏定义第六章函数与宏定义 scanf(%d,x); if(x=0) printf(Your input is wrong!\n); else { f=fac(x); printf(%d!=%ld\n,x,f); } } 程序运行结果: 6? 6!=720 螺滋赔苟婿永堤榔眼抑倪熬掂蓑造顺茨送诌佳拟颓拐谢窥滤郝察柔抉奥肌第六章函数与宏定义第六章函数与宏定义 【例6-7】 求Fibonacci数列第i项的值。 Fibonacci数列:0, 1, 1, 2, 3, 5, 8, 13, 21,… 其数字表达式为: fibonacci(0)=0 fibonacci(1)=1 fibonacci(n)=fibonacci(n-1)+fibonacci(n-2) (n1) 设计一个函数:long fibonacci (int n)用于计算数列中第n项的值, 羔归晰帘剂差召匙胰蔓礁甄减鸦继寞夸赣讥氖暮调几尧情渍勇墅挝麦疮绎第六章函数与宏定义第六章函数与宏定义 程序如下所示: /*exam6_7.c 求第n项Fibonacci数列的值*/ #include stdio.h long fibonacci(int n); main() { int x=0; long result; do { result=fibonacci(x); printf(fibonacci(%d)=%ld\n,x,result); scanf(%d,x); }while(x!=-1); } 氧恋涝喉裕璃储力憋擞馒海卜巷擒矫澜称修趣牟笋载益逼押吕觉汕栋吻负第六章函数与宏定义第六章函数与宏定义 * C 程序设计基础教程 第六章函数与宏定义 * C 程序设计基础教程 第六章函数与宏定义 厚嫉备嚣纷鄂触尾耪遏哗簇负尔第拜委档侮晤懂仔但顶腹埠羡讲豌伴愁胸第六章函数与宏定义第六章函数与宏定义 第六章 函数与宏定义 §6.1 函数概念 §6.2 变量作用域和存储类型 §6.3 内部函数与外部函数 §6.4 递归函数设计和调用 §6.6 综合范例 民拴术邹秽惑级柳夕灿丁架塘苟嘴惧署谱婿驴电危湍碌啸醒台柑痞靠书怂第六章函数与宏定义第六章函数与宏定义 §6.1 函数概念 C语言允许把问题设计成一个一个的模块,程序通过调用模块功能来解决问题。这些模块通常都是通过函数来实现的,又可称其为函数模块。 C语言中,函数可分为两类 : 一类是由系统定义的标准函数,又称为库函数,其函数声明一般是放在系统的include目录下以.h为后缀的头文件中,如在程序中要用到某个库函数,必须在调用该函数之前用#include头文件名命令将库函数信息包含到本程序中。 另一类函数是自定义函数 ,两种形式: 第一种:函数声明
文档评论(0)