- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
* */49 C语言中还允许在函数中调用自身,或函数之间相互调用,这种调用方式称之为递归。递归又分为直接递归调用和间接递归调用。 直接递归调用;函数直接调用自身。 间接递归调用:函数互相调用对方。 直接递归: int temp (int x) { int y, z; …… z=temp(y); …… } * */49 间接递归: 显然,递归有可能陷入无限递归状态,最终导致错误发生。因此,设计一个递归问题必须具备两个条件: 1.后一部分与原始问题类似。 2.后一问题是原始问题的简化。 * */49 【例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); } * */49 完整程序如下: /*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; * */49 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 * */49 【例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项的值, * */49 程序如下所示: /*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); } * */49 long fibonacci(int n) { if(n==0||n==1) return n; else return fibonacci(n-1)+fibonacci(n-2); } 程序运行结果: fibonacci(0)=0 3? fibonacci(3)=2 4? fibonacci(4)=3 6? * */49 以x=4为例,下图说明了fibonacci函数是怎样计算fibonacci(4)的。图中把fibonacci简写成f。 * */49 §6.6 综合范例 【例6-12】 在屏幕上画一个18×18大小的棋盘。 程序如下: /*exam6_12.c 在屏幕上画一个棋盘*/ #include stdio.h #include ctype.h #include conio.h /*定义画棋盘所需的制表符*/ #define LU 0xda /*左上角*/ #define RU 0xbf /*右上角*/ #define LD 0xc0 /*左下角*/ #define RD 0xd9 /*右下角*/ #define L 0xc3 /*左边*/ #define R 0xb4 /*右边*/ * */49 #define U 0xc2 /*上边*/ #define D 0xc1 /*下边*/ #define CROSS 0xc5 /*十字叉*/ /*棋盘左上角坐标*/ #define MAP_X 5 #define MAP_Y 5 void draw_cross(int x,int y); void draw_map(); main() { textmode(C40); draw_map(); } * */49 /*函数定义:*/ void draw_map(
您可能关注的文档
- C语言程序设计 项目教学 王卓 杜娜 项目4.ppt
- C语言程序设计 项目教学 王卓 杜娜 项目5.ppt
- C语言程序设计 项目教学 王卓 杜娜 项目8.ppt
- C语言程序设计 项目教学 王卓 杜娜 项目11.ppt
- C语言程序设计 作者 黄锐军 第5章 数组.ppt
- C语言程序设计 作者 黄锐军 第8章 编译预处理.ppt
- C语言程序设计案例教程 第2版 普通高等教育“十一五”国家级规划教材 作者 廖湖生 叶乃文 周珺 C语言入门.ppt
- C语言程序设计案例教程 第2版 普通高等教育“十一五”国家级规划教材 作者 廖湖生 叶乃文 周珺 C语言入门1.ppt
- C语言程序设计案例教程 第2版 普通高等教育“十一五”国家级规划教材 作者 廖湖生 叶乃文 周珺 函数.ppt
- C语言程序设计案例教程 第2版 普通高等教育“十一五”国家级规划教材 作者 廖湖生 叶乃文 周珺 函数1.ppt
文档评论(0)