网站大量收购独家精品文档,联系QQ:2885784924

《C/C 程序设计》第04章(函数).ppt

  1. 1、本文档共18页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
4.1 综述 C 是函数型语言, C 程序的基本部件是函数. 一个函数完成一个特定功能, 整个 程序的功能靠一系列的函数调用来实现. C程序的执行顺序与函数出现的顺序无关, 只与函数的调用顺序有关. C约定无论何时, 首先调用的函数是 main( ). C函数分两种: 用户自己定义的函数和库函数. 使用库函数时应当包含其头文件. * 4.3 函数的定义和调用 4.3 .1 函数定义 函数定义的一般形式: 函数属性说明 函数(值)类型说明 函数名( 类型标示符参数名1 [,类型标示符 参数名2, ….] ) 如:static float sum(float x,float y) /* static 、extern*/ { 说明部分 执行部分 返回部分[ return 表达式] } [例] 求n!的函数。(exn.c) 4.6 函数的嵌套调用 1. 什么是函数的嵌套调用? 函数中又调用函数(其它或自身)。 例:计算4!+5!+6!+7! (ex413.c) 例: 用弦截法求方程的根。设:x3-5x2+16x-80=0 方法: 1. 任取 x1、x2 ,得到 f(x1)、f(x2),并使 f(x1)* f(x2) 0 (异号), 则在[x1, x2] 上必有一根。 2. 连f(x1)、f(x2)两点,截 x 轴得 x 点和f(x) 。程序中用下列公式计算x 3. 若f(x)与 f(x1)同号,则根在[x, x2]上,用 f(x) 作新 f(x1), 反之亦然。 4. 若:|f(x)|e 则循环 2、3 两步。(exroot.c) 4.7.2 函数的递归调用有两种结构 直接递归结构:在函数内部有专门调用自身函数的语句(如前求n!) 间接递归结构:通过它所调用的函数再来调用自己。 4. 7.3 递归程序设计 例:五人说年龄。(exage.c) 1)按递推算法 age(n)=age(n-1)+2 从n=1 递推。 2)按递归算法 age(n-1)+2 n1 10 n=1 int age(int n); void main( ) { printf(“%d”,age(5));} int age(int n) { int c; if (n= =1) c=10; /* 递归函数中必须有终止嵌套的语句。 */ else c=age(n-1)+2; return c; } 例:用递归算法及欧几里德法求最大公约数(exgcd.c) gcd(b,a%b) b!=0 a b=0 int gcd(int m, int n); void main( ) { int a,b; scanf(“%d%d”,a,b); printf(“gcd=%d”,gcd(a,b)); } 例: 用递归法求 Fibonacci数列。(exfib.c) 1 n=1, 2 f(n-1)+f(n-2) n2 int feb( int n); void main( ) { int m ; scanf(“%d”,m); printf(“ term %d Feb. = %d”, m, feb(m)); } int feb( int n ) { int f; if(n= =1||n= =2)f=1; else f=f(n-1)+f(n-2); re

文档评论(0)

82393aa + 关注
实名认证
内容提供者

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

1亿VIP精品文档

相关文档