- 1、本文档共17页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第23次(函数的嵌套调用、递
Date: * IT Education Training IT Education Training Neusoft Institute of Information Date: * 办公室:C7座201 EMAIL:huang.w@ 课件下载网址: 任课教师:黄伟 第五章 函 数 授课要点 函数的嵌套调用 函数的递归调用 函数的嵌套调用 f1(){ … f2(); … } f2(){ … f3(); … } f3(){ … … … } 函数的嵌套调用举例1 main(){ int a=3,b=5,s; s=cal(a,b); printf(“%d”,s); } int cal(int x,int y){ int result,s1,s2; s1=powl(x,y); s2=pow(y,x); result=s1+s2; return result; } int pow(int m,int n){ int i,res=1; for(i=0;in;i++) res *=m; return res; } 求 3 + 5 。 5 3 函数的嵌套调用举例2 自定义函数mymax2(),求出2个参数的最大值,然后定义函数 mymax3(),调用mymax2()求出3个参数中的最大值,将值返回给主函数,输出该结果。 函数首部为: float mymax3(float x, float y, float z) 模仿练习 1、自定义函数mymax (),求出3个参数的最大值; 自定义函数 mymin(),求出3个参数的最小值; 自定义函数mysub(),调用mymax()和mymin()求出3个参数的最大值与最小值的差; 在主函数中调用mysub(),输出结果。 函数首部为: float mymax (float x, float y,float z) float mymin(float x,float y,float z) float mysub (float x,float y,float z) 2、计算s=1k+2k+3k+……+N k 函数首部为:long f1(int n,int k) /*计算n的k次方*/ long f2(int n,int k) /*计算1到n的k次方之累加和*/ 案例解答 #define K 4 #define N 5 long f1(int n,int k) /*计算n的k次方*/ { long power=n; int i; for(i=1;ik;i++) power *= n; return power; } long f2(int n,int k) /*计算1到n的k次方之累加和*/ { long sum=0; int i; for(i=1;i=n;i++) sum += f1(i, k); return sum; } main() { printf(Sum of %d powers of integers from 1 to %ld = ,K,N); printf(%d\n,f2(N,K)); } 函数的递归调用 C语言的函数调用允许直接或间接地调用该函数本身,称为函数的递归调用。 含有直接或间接调用自己的函数称为递归函数。 函数f 调用函数f 函数f1 调用函数f2 调用函数f1 函数f2 直接调用本身 间接调用本身 函数的递归调用举例 用递归函数求4! 4! = 4*3! ; 3! = 3*2! ; 2! = 2*1! ; 1! = 1 ; n! = n*(n-1)! 1! = 1 函数的递归调用举例 例:用递归函数求n! n! = n * (n-1)! int myFac( int n) { if (n==1) return 1; //递归的结束条件 return n*myFac(n-1); } myFac(n)就是求n! myFac(n-1)就是求(n-1)! 函数的递归调用举例 fac(3)*4 fac(2)*3 fac(1)*2 reutrn(1) reutrn(1*2) reutrn(2
文档评论(0)