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

6.4函数的嵌套及递归调用-C语言程序设计.pptVIP

6.4函数的嵌套及递归调用-C语言程序设计.ppt

  1. 1、本文档共15页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多

感谢聆听C语言程序设计主讲:刘春英四、函数的嵌套及递归调用1.函数的嵌套调用嵌套调用,就是在调用一个函数的过程中,被调用的函数又调用其他函数。C规定:函数定义不可嵌套,但可以嵌套调用函数。main(){……a();}a函数{b();…return;}b函数{……return;}①③④⑤⑥⑦②四、函数的嵌套及递归调用1.函数的嵌套调用四、函数的嵌套及递归调用【例】求两个整数的最小公倍数。intdivisor(intx,inty)/*求整数x、y的最大公约数*/{intr;r=x%y;while(r!=0){x=y;y=r;r=x%y;}return(y);}intmultiple(intx,inty)/*求整数x、y的最小公倍数*/{intr;r=x*y/divisor(x,y);return(r);}voidmain(){inta,b,c;printf(\npleaseenterab:);scanf(%d%d,a,b);c=multiple(a,b);/*调用函数multiple*/printf(“最小公倍数为:%d,c);}四、函数的嵌套及递归调用2.函数的递归调用四、函数的嵌套及递归调用2.函数的递归调用一个函数(除主函数)直接或间接调用自己称为递归调用。直接递归间接递归四、函数的嵌套及递归调用2.函数的递归调用递归(recursion)满足2个条件:①有反复执行的过程(调用自身)②有跳出反复执行过程的条件(递归出口)。

四、函数的嵌套及递归调用2.函数的递归调用递推阶段:递推归纳,逐层调用,调用函数自身,直至递归结束条件,这时递推阶段结束。回归阶段:逐层求值回归,返回到调用该层的位置,结束回归阶段,完成递归调用。四、函数的嵌套及递归调用2.函数的递归调用【例1】用递归调用的方法求n!n!=n*(n-1)*(n-2)*……*1=n(n-1)!。递归公式:结束条件递归条件longfac(intn){longm;if(n==0||n==1)m=1;elsem=f(n-1)*n;return(m);}voidmain(){printf(“4!=%ld\n“,fac(4));}递归调用终止条件四、函数的嵌套及递归调用2.函数的递归调用fac(4)=fac(3)*4fac(3)=fac(2)*3fac(2)=fac(1)*2fac(1)=1fac(2)=2fac(3)=6fac(4)=24递推阶段回归阶段四、函数的嵌套及递归调用2.函数的递归调用结束条件四、函数的嵌套及递归调用2.函数的递归调用【例2】5个人坐在一起报岁数,问第5个人几岁?他说比第4个人大两岁;问第4个人几岁?他说比第3个人大两岁;问第3个人几岁?他说比第2个人大两岁;问第2个人几岁?他说比第1个人大两岁;最后问第1个人几岁?他说10岁。age(5)=age(4)+2age(4)=age(3)+2age(3)=age(2)+2age(2)=age(1)+2age(1)=10得出公式:10有终止递归公式12141618四、函数的嵌套及递归调用2.函数的递归调用四、函数的嵌套及递归调用2.函数的递归调用intage(intn){intc;if(n==1)c=10;elsec=age(n-1)+2;return(c);}main(){printf(“%d\n“,age(5));}**感谢聆听**

文档评论(0)

1亿VIP精品文档

相关文档