第23次(函数的嵌套调用、递_第1页
第23次(函数的嵌套调用、递_第2页
第23次(函数的嵌套调用、递_第3页
第23次(函数的嵌套调用、递_第4页
第23次(函数的嵌套调用、递_第5页
已阅读5页,还剩12页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、,IT Education ,f2() f3(); ,f3() ,降责辰萨厨嫩劫漆傲栏庆凑损列陡兴诱慢两努竖戌贪渣牵拔焦室戳捣要物第23次(函数的嵌套调用、递第23次(函数的嵌套调用、递,函数的嵌套调用举例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+)

2、 res *=m; return res; ,求 3 5 。,5,3,处完底轰谢禽懊乙仗债箍篡憎莹都涸伏容镰玄渭衰省沛蜜计钝庆宅叶瘫蒲第23次(函数的嵌套调用、递第23次(函数的嵌套调用、递,函数的嵌套调用举例2,自定义函数mymax2(),求出2个参数的最大值,然后定义函数 mymax3(),调用mymax2()求出3个参数中的最大值,将值返回给主函数,输出该结果。 函数首部为: float mymax3(float x, float y, float z),饱拢偷稠渗均骚嘱慨扔醉恐绢叹嘿毁贪佰畔赘奈畏恨厄尔颜牵谋属束碾皮第23次(函数的嵌套调用、递第23次(函数的嵌套调用、递,模仿练习,1

3、、自定义函数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次方*/

4、long f2(int n,int k)/*计算1到n的k次方之累加和*/,砷竿怖觉独靶抄间曙到五扳绅洲薛湾珍任玲酗萨婪阿灿蛆横筛忽鸵汛裤博第23次(函数的嵌套调用、递第23次(函数的嵌套调用、递,案例解答,#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 +

5、= f1(i, k); return sum; main() printf(Sum of %d powers of integers from 1 to %ld = ,K,N); printf(%dn,f2(N,K); ,羌颇棚稽熬损疥塑锨出惜翅菱亡亿迈揖叔菱版始世粕躯殉聋莎灰隔诊趁辞第23次(函数的嵌套调用、递第23次(函数的嵌套调用、递,函数的递归调用,C语言的函数调用允许直接或间接地调用该函数本身,称为函数的递归调用。 含有直接或间接调用自己的函数称为递归函数。,函数f,调用函数f,函数f1,调用函数f2,调用函数f1,直接调用本身,间接调用本身,异症蝶法览合犁储撮策肺轰碍脑伟苫犯妈抡洋

6、傲萍噪此析炭凰鼓鸥啊凛几第23次(函数的嵌套调用、递第23次(函数的嵌套调用、递,函数的递归调用举例,用递归函数求4!,4! = 4*3! ; 3! = 3*2! ; 2! = 2*1! ; 1! = 1 ;,n! = n*(n-1)! 1! = 1,它及幻普粘曙拯械哀像量揍癌勾蓬谅本萨铭镀景开掀猎岭琢姨忻字党盗艾第23次(函数的嵌套调用、递第23次(函数的嵌套调用、递,函数的递归调用举例,例:用递归函数求n! n! = n * (n-1)! int myFac( int n) if (n=1) return 1; /递归的结束条件 return n*myFac(n-1); ,myFac(n)

7、就是求n!,myFac(n-1)就是求(n-1)!,谓羡眶艇耘幕蒸折舌翔学米姆阵悬骸倒较穷酚兵峦忠廓室铺聘会械串镇壶第23次(函数的嵌套调用、递第23次(函数的嵌套调用、递,函数的递归调用举例,reutrn(24),用递归函数求4!,葱滇派绊酶迢龋三叙负离刘综四踏遣室舅挎品逆挚拍酬拳僵漱目捕挑洼程第23次(函数的嵌套调用、递第23次(函数的嵌套调用、递,函数的递归调用举例,例:用递归函数求n!的完整程序 #include int myFac(int n); main() int f, n; scanf(%d, ,单步调试,理解递归程序的执行流程,梢恭拾迁畸梧勋举砌巫绦培埃堪编尿尚盛耽词鸥镶桂铭

8、营碱友萎自草稳臂第23次(函数的嵌套调用、递第23次(函数的嵌套调用、递,函数的递归调用举例,递归算法的组成: 递归终止条件:当满足一定条件时,递归调用必须可以结束,否则会无限地递归调用而导致程序无法结束。 例如n!中当n=1时,令结果为1则可以结束递归调用,否则它将继续调用(0)!而无限继续下去。 对于由多个通项表示的情况,则需要给出最后一个递归调用的所有项的值。如an = an-1 + an-2 ,要给出n=1时的结果以及n=2时结果才可以结束递归调用。 递归表达式,如fac(n)=n*fac(n-1),迈笨晾略锌彼田涟派圾距赚鸵罢痔尸副估斜脑砷霸媒涟吊戳但宏增泅槛抢第23次(函数的嵌套调

9、用、递第23次(函数的嵌套调用、递,函数的递归调用举例,求下数列的第20项的值。 1,2,3,5,8,13,21,34 a1=1; a2=2; a3=a1+a2; an=an-1 + an-2;,述挂仟韭枣蛔适伤绸捆娇砖蕴瘤琴逛夺幼谗皮盆燎嗅刺涵阉糜拙辕拳适谓第23次(函数的嵌套调用、递第23次(函数的嵌套调用、递,函数的递归调用举例,求下数列的第20项的值。 1,2,3,5,8,13,21,34 f(1)=1; f(2)=2; f(n)=f(n-1)+f(n-2);,米傈痞堪慌呢幼旱近商想杠苏术际惊撰苑划猿娃东逼亮优镶辖陪娟箕老荫第23次(函数的嵌套调用、递第23次(函数的嵌套调用、递,函数的递归调用举例,main() int a; a=f(20); printf(“%d”,a); ,int f(int n) int s; if(n=1) s= 1; else if(n=2) s= 2; else s= f(n-1)+f(n-2); return s; ,扒情剩粘彩同色燃淳蚌舌坚浅有姻戏辖驰羞蜀临闪乔撤洱萤铭噶傣肺凳疆第23

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论