欢迎来到天天文库
浏览记录
ID:48735579
大小:239.13 KB
页数:32页
时间:2020-01-20
《C语言_ch07_2_函数的嵌套调用和递归调用.pptx》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、2021/9/161上一节我们学到了函数的定义形参函数的声明函数的调用实参函数的调用过程局部变量(包括形参)何时分配内容、何时释放内存何时实参赋形参2021/9/162第7章用函数实现模块化程序设计7.1为什么要用函数7.2怎样定义函数7.3调用函数7.4对被调用函数的声明和函数原型7.5函数的嵌套调用7.6函数的递归调用7.7数组作为函数参数7.8局部变量和全局变量7.9变量的存储方式和生存期7.10关于变量的声明和定义7.11内部函数和外部函数2021/9/163函数的嵌套调用nestedfunction函数的嵌套调用:调用一个函数的过程中,又可以调用另一
2、个函数注意:C语言的函数定义是互相平行、独立的,即函数不能嵌套定义2021/9/164嵌套调用的执行过程main函数①调用a函数⑨结束a函数③调用b函数⑦②⑧b函数⑤④⑥2021/9/165例:设计一个常用圆形体体积计算器,采用命令方式输入1、2、3,分别选择计算球体、圆柱体、圆锥体的体积,并输入计算所需相应参数。分析:输入1、2、3选择计算3种体积,其他输入结束计算设计一个控制函数cal(),经它辨别圆形体的类型再调用计算球体、圆柱体、圆锥体体积的函数设计单独的函数计算不同圆形体的体积2021/9/1663层结构,5个函数降低程序的构思、编写、调试的复杂度可
3、读性好程序结构main()cal()vol_ball()vol_cylind()vol_cone()程序结构intmain(void){……cal(sel);}voidcal(intsel){……vol_ball();vol_cylind();vol_cone();}doublevol_ball(){……}doublevol_cylind(){……}doublevol_cone(){……}main()cal()vol_ball()vol_cylind()vol_cone()源程序#definePI3.141592654voidcal(intsel);doubl
4、evol_ball(void);doublevol_cylind(void);doublevol_cone(void);intmain(void){intsel;while(1){printf("1-计算球体体积");printf("2-计算圆柱体积");printf("3-计算圆锥体积");printf("其他-退出程序运行");printf("请输入计算命令:");scanf("%d",&sel);if(sel<1
5、
6、sel>3)//输入非1~3,循环结束break;cal(sel);//输入1~3,调用cal()}return0;}/*常
7、用圆形体体积计算器的主控函数*/voidcal(intsel){switch(sel){case1:printf("球体积为:%.2f",vol_ball());break;case2:printf("圆柱体积为:%.2f",vol_cylind());break;case3:printf("圆锥体积为:%.2f",vol_cone());break;}}2021/9/1610//计算球体体积V=4/3*PI*r*r*rdoublevol_ball(){doubler;printf("请输入球的半径:");scanf("%lf",&r);retur
8、n(4.0/3.0*PI*r*r*r);}//计算圆柱体积V=PI*r*r*hdoublevol_cylind(){doubler,h;printf("请输入圆柱的底圆半径和高:");scanf("%lf%lf",&r,&h);return(PI*r*r*h);}//计算圆锥体积V=h/3*PI*r*rdoublevol_cone(){doubler,h;printf("请输入圆锥的底圆半径和高:");scanf("%lf%lf",&r,&h);return(PI*r*r*h/3.0);}2021/9/1611递归(Recursion)函数直接或间接调用自己为
9、递归unsignedintfact(unsignedintn){if(0==n)return1;elsereturnn*fact(n-1);}2021/9/16122021/9/1613递归的实现递归(recursion)的定义调用自身的程序递归的基本思想问题分解:把一个不能或不好解决的大问题转化为一个或几个小问题,再把这些小问题进一步分解成更小的小问题,直至每个小问题都可以直接解决。德罗斯特效应—递归的视觉效应2021/9/1614递归应用递归算法一般用于解决三类问题:(1)数据的定义是按递归定义的。求阶乘:n!=1×2×3×……×n或n!=n×(n-1
10、)!Fibonacci函数(效率极其低
此文档下载收益归作者所有