- 1、本文档共38页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
Chap_9 函数
Chap_9 函数 函数的组织 递归函数 变量与函数 宏定义 一个例子 #include stdio.h double fact( int n); void main() { int i, m; double s=0; while( scanf(%d, m), m2); for( i=1; i=m; i++) s+= 1.0/fact(i); printf(“s=%d\n, s) ; } 函数类型_1 从用户角度: 库函数: scanf(), printf(), getchar(), putchar(), puts(), gets() fabs(), sqrt(), exp(), … strcpy(), strcat(), strcmp(), strlen() isdigit(), isalphar(), isupper(), islower(), toupper(),… 自定义函数: 主函数 main() 其他函数 fact(), … 函数类型_2 从函数的参数: 无参函数 如 void main() 有参函数 如 double fact( int n) 从函数的返回值: 无返回值函数 如 void main() 有返回值函数 如 double fact( int n) 【09春试题】函数的定义与调用 定义函数fact(n),计算n!,形参n的类型是int,函数类型是double。 定义函数cal(x,e),计算多项式s,直到最后一项绝对值小于e, 形参x和e的类型都是double,函数类型是double,要求调用fact(n)函数,调用库函数pow(x,n)来计算xn。 定义函数main(),输入两个浮点数x和e,计算多项式的值,直到最后一项的绝对值小于精度e。要求调用cal(x,e) 【函数功能分析】 主函数main(): 输入 x 和 e;调用函数cal(x,e);输出结果 自定义函数cal(x, e): 累加求和;调用函数fact(i), 求i!调用库函数pow(x,i) , 求xi;向主调函数main() 返回s 自定义函数fact(n): 求n!;向主调函数cal() 返回n! 函数调用关系 定义函数fact() /*定义函数fact(n),计算n!,形参n的类型是int,函数类型是double */ double fact( int n) { int i; double f=1; for( i=1; i=n; i++) f*= i; return f; } 定义函数cal() /*定义函数cal(x,e),计算多项式s的值,直到最后一项绝对值小于e,形参x和e的类型是double,函数类型是double */ #include math.h //库函数pow(),fabs() double cal(double x, double e) { double item, s=0; int i=1; do{ item= fact(i)/pow(x,i); s+= item; i++; }while ( fabs(item)=e ) return s; } 定义主函数main() /*定义函数main(),输入两个浮点数x和e,计算多项式s的值(最后一项绝对值小于e) */ # includestdio.h void main() { double x,e; printf(Input x, e:); scanf(“%lf%lf”, x,e); printf(s=%f \n , cal(x,e) ); } 9.2 递归函数 求阶乘n! 9.2 递归函数--求n! 递归函数 fact( n )的实现过程 fact(3)= 3*fact(2)= ① 2*fact(1)= ② fact(1)=1 递归函数 递归函数:函数体中直接或间接地调用该函数本身。 哪些问题可以用递归函数实现? 问题可逐步简化成自身较简单的形式,即递归式子,如:n!=n*(n-1)! 2. 有递归的最终结束条件,即递归出口 如: if (n==1) r=1;
文档评论(0)