第23次函数的嵌套调用递归调用PPT课件

上传人:无*** 文档编号:147307357 上传时间:2022-09-02 格式:PPT 页数:18 大小:289.50KB
收藏 版权申诉 举报 下载
第23次函数的嵌套调用递归调用PPT课件_第1页
第1页 / 共18页
第23次函数的嵌套调用递归调用PPT课件_第2页
第2页 / 共18页
第23次函数的嵌套调用递归调用PPT课件_第3页
第3页 / 共18页
资源描述:

《第23次函数的嵌套调用递归调用PPT课件》由会员分享,可在线阅读,更多相关《第23次函数的嵌套调用递归调用PPT课件(18页珍藏版)》请在装配图网上搜索。

1、Neusoft Institute of InformationDate:September 2,2022IT Education&Training2021/6/7IT Education&TrainingNeusoft Institute of InformationDate:2022年9月2日星期五办公室:办公室:C7座座201EMAIL:课件下载网址:ftp:/任课教师:黄伟任课教师:黄伟第五章第五章函函 数数Neusoft Institute of InformationDate:September 2,2022IT Education&Training2021/6/7授课要点授课要点

2、 函数的嵌套调用函数的嵌套调用 函数的递归调用函数的递归调用Neusoft Institute of InformationDate:September 2,2022IT Education&Training2021/6/7函数的嵌套调用函数的嵌套调用f1()f2();f2()f3();f3()Neusoft Institute of InformationDate:September 2,2022IT Education&Training2021/6/7函数的嵌套调用举例函数的嵌套调用举例1main()int a=3,b=5,s;s=cal(a,b);printf(“%d”,s);int c

3、al(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 。53Neusoft Institute of InformationDate:September 2,2022IT Education&Training2021/6/7函数的嵌套调用举例函数的嵌套调用举例2 自定义函数自定义函数mymax2(),求出,求出2个参数的最大值,然后定个参数的

4、最大值,然后定义函数义函数 mymax3(),调用,调用mymax2()求出求出3个参数中的最个参数中的最大值,将值返回给主函数,输出该结果。大值,将值返回给主函数,输出该结果。函数首部为:函数首部为:float mymax3(float x,float y,float z)Neusoft Institute of InformationDate:September 2,2022IT Education&Training2021/6/7模仿练习模仿练习1、自定义函数、自定义函数mymax(),求出,求出3个参数的最大值;个参数的最大值;自定义函数自定义函数 mymin(),求出,求出3个参数的

5、最小值;个参数的最小值;自定义函数自定义函数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)long f1(in

6、t n,int k)/*计算计算n n的的k k次方次方*/long f2(int n,int k)long f2(int n,int k)/*计算计算1 1到到n n的的k k次方之累加和次方之累加和*/Neusoft Institute of InformationDate:September 2,2022IT Education&Training2021/6/7案例解答案例解答#define K 4#define N 5long f1(int n,int k)/*计算计算n的的k次方次方*/long power=n;int i;for(i=1;ik;i+)power*=n;return

7、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(%dn,f2(N,K);Neusoft Institute of InformationDate:September 2,2022IT Education&Training2021/6/7函数的递归调用函数的递归调用nC语言的函数调用允许直接或间接

8、地调用该函数本身,称为函数的递归调用。n含有直接或间接调用自己的函数称为递归函数。函数f调用函数f函数f1调用函数f2调用函数f1函数f2Neusoft Institute of InformationDate:September 2,2022IT Education&Training2021/6/7函数的递归调用举例函数的递归调用举例n用递归函数求4!4!=4*3!;3!=3*2!;2!=2*1!;1!=1;n!=n*(n-1)!1!=1Neusoft Institute of InformationDate:September 2,2022IT Education&Training2021

9、/6/7函数的递归调用举例函数的递归调用举例 例:用递归函数求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)!Neusoft Institute of InformationDate:September 2,2022IT Education&Training2021/6/7函数的递归调用举例函数的递归调用举例fac(3)*4fac(2)*3fac(1)*2reutrn(1)reutrn(1*2)reutrn(2*3)

10、return(6*4)调用过程返回过程fac(4)reutrn(24)n用递归函数求4!Neusoft Institute of InformationDate:September 2,2022IT Education&Training2021/6/7函数的递归调用举例函数的递归调用举例例:用递归函数求例:用递归函数求n!的完整程序的完整程序#include int myFac(int n);main()int f,n;scanf(%d,&n);f=myFac(n);printf(%d!=%dn,n,f);int myFac(int n)int s;if (n=1)s=1;/递归的结束条件递归

11、的结束条件 else s=n*myFac(n-1);return s;单步调试,理解递归程序的单步调试,理解递归程序的执行流程执行流程Neusoft Institute of InformationDate:September 2,2022IT Education&Training2021/6/7函数的递归调用举例函数的递归调用举例 递归算法的组成:递归终止条件:当满足一定条件时,递归调用必须可以结束,否则会无限地递归调用而导致程序无法结束。例如n!中当n=1时,令结果为1则可以结束递归调用,否则它将继续调用(0)!而无限继续下去。对于由多个通项表示的情况,则需要给出最后一个递归调用的所有项的

12、值。如an=an-1+an-2,要给出n=1时的结果以及n=2时结果才可以结束递归调用。递归表达式,如fac(n)=n*fac(n-1)Neusoft Institute of InformationDate:September 2,2022IT Education&Training2021/6/7函数的递归调用举例函数的递归调用举例求下数列的第求下数列的第20项的值。项的值。1,2,3,5,8,13,21,34a1=1;a2=2;a3=a1+a2;an=an-1+an-2;Neusoft Institute of InformationDate:September 2,2022IT Educ

13、ation&Training2021/6/7函数的递归调用举例函数的递归调用举例求下数列的第求下数列的第20项的值。项的值。1,2,3,5,8,13,21,34f(1)=1;f(2)=2;f(n)=f(n-1)+f(n-2);Neusoft Institute of InformationDate:September 2,2022IT Education&Training2021/6/7函数的递归调用举例函数的递归调用举例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;2021/6/7Neusoft Institute of Information办公室:C7座201EMAIL:课件下载网址:ftp:/Neusoft Institute of InformationDate:September 2,2022IT Education&Training部分资料从网络收集整理而来,供大家参考,感谢您的关注!

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

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!