C语音(函数的嵌套调用、递归调用)
更新时间:2023-08-07 11:13:01 阅读量: 实用文档 文档下载
Date: September 25, 2013 2013年9月25日星期三
Neusoft Institute of Information
第五章 函 数办公室:C7座201 EMAIL:wenh@http://www.77cn.com.cn 课件下载网址:ftp://http://www.77cn.com.cn
任课教师:温荷
IT Education & Training IT Education & Training
Date: September 25, 2013
Neusoft Institute of Information
授课要点 函数的嵌套调用 函数的递归调用
IT Education & Training
Date: September 25, 2013
Neusoft Institute of Information
函数的嵌套调用f1(){ … f2(){ … f3(){ …
f2();… } }
f3();… }
……
IT Education & Training
Date: September 25, 2013
Neusoft Institute of Information
函数的嵌套调用举例1求3 +5
5
3
。 int cal(int x,int y){
main(){ int a=3,b=5,s;
int result,s1,s2;
int pow(int m,int n){ int i,res=1; for(i=0;i<n;i++) res *=m; return res; }
s1=powl(x,y);s2=pow(y,x); result=s1+s2;
s=cal(a,b);printf(“%d”,s); } }IT Education & Training
return result;
Date: September 25, 2013
Neusoft Institute of Information
函数的嵌套调用举例2自定义函数mymax2(),求出2个参数的最大值,然后定 义函数 mymax3(),调用mymax2()求出3个参数中的最 大值,将值返回给主函数,输出该结果。
函数首部为: float mymax3(float x, float y, float z)
IT Education & Training
Date: September 25, 2013
Neusoft Institute of Information
模仿练习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次方之累加和*/
IT Education & Training
Date: September 25, 2013
Neusoft Institute of Information
案例解答#define K 4 #define N 5 long f1(int n,int k) /*计算n的k次方*/ { long power=n; int i; for(i=1;i<k;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)); }
IT Education & Training
Date: September 25, 2013
Neusoft Institute of Information
函数的递归调用 C语言的函数调用允许直接或间接地调用该函数本身,称为函 数的递归调用。 含有直接或间接调用自己的函数称为递归函数。 函数f 函数f1 函数f2
调用函数f 直接调用本身IT Education & Training
调用函数f2
调用函数f1
间接调用本身
Date: September 25, 2013
Neusoft Institute of Information
函数的递归调用举例
用递归函数求4! 4! = 4*3! ; 3! = 3*2! ; n! = n*(n-1)! 1! = 1
2!
= 2*1! ;1! = 1 ;
IT Education & Training
Date: September 25, 2013
Neusoft Institute of Information
函数的递归调用举例 例:用递归函数求n! n! = n * (n-1)!myFac(n) 就是求n!
int myFac( int n) { if (n==1) return 1; //递归的结束条件 return n*myFac(n-1); }myFac(n-1) 就是求(n-1)!IT Education & Training
Date: September 25, 2013
Neusoft Institute of Information
函数的递归调用举例
用递归函数求4!
调用过程 fac(4) fac(3)*4
返回过程 reutrn(24) return(6*4) reutrn(2*3) reutrn(1*2) reutrn(1)
fac(2)*3fac(1)*2
IT Education & Training
Date: September 25, 2013
Neusoft Institute of Information
函数的递归调用举例 例:用递归函数求n!的完整程序 #include <stdio.h> int myFac(int n); main() { int f, n; scanf("%d", &n); f = myFac(n); printf("%d!=%d\n", n, f); } int myFac( int n) { int s; if (n==1) s= 1; //递归的结束条件 else s= n*myFac(n-1); return s; } IT Education & Training 单步调试,理解递归程序的 执行流程
Date: September 25, 2013
Neusoft Institute of Information
函数的递归调用举例 递归算法的组成: – 递归终止条件:当满足一定条件时,递归调用 必须可以结束,否则会无限地递归调用而导致 程序无法结束。 例如n!中当n=1时,令结果为1则可以结束递 归调用,否则它将继续调用(0)!而无限继续下 去。 对于由多个通项表示的情况,则需要给出最 后一个递归调用的所有项的值。如an = an-1 + an-2 ,要给出n=1时的结果以及n=2时结果 才可以结束递归调用。 – 递归表达式,如fac(n)=n*fac(n-1)IT Education & Training
Date: September 25, 2013
Neusoft Institute of Information
函数的递归调用举例求下数列的第20项的值。 1,2,3,5,8,13,21,34…… a1=1; a2=2; a3=a1+a2; … an=an-1 + an-2;
IT Education & Training
Date: September 25, 2013
Neusoft Institute of Information
函数的递归调用举例求下数列的第20项的值。 1,2,3,5,8,13,21,34…… f(1)=1; f(2)=2;f(n)=f(n-1)+f(n-2);
IT Education & Training
Date: September 25, 2013
Neusoft Institute of Information
函数的递归调用举例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; }
IT Education & Training
Neusoft Institute of Information
办公室:C7座201 EMAIL:wenh@http://www.77cn.com.cn 课件下载网址:ftp://http://www.77cn.com.cn
正在阅读:
C语音(函数的嵌套调用、递归调用)08-07
xxx-青年志愿者先进个人事迹材料 - 1500字01-22
初中班干部职责表02-29
时光飞逝作文600字07-05
河南职院教师招聘信息02-08
区民政局工作目标02-19
优秀建行实习个人总结报告06-09
财务总监的岗位职责02-25
火牛开发板光盘目录04-23
- 教学能力大赛决赛获奖-教学实施报告-(完整图文版)
- 互联网+数据中心行业分析报告
- 2017上海杨浦区高三一模数学试题及答案
- 招商部差旅接待管理制度(4-25)
- 学生游玩安全注意事项
- 学生信息管理系统(文档模板供参考)
- 叉车门架有限元分析及系统设计
- 2014帮助残疾人志愿者服务情况记录
- 叶绿体中色素的提取和分离实验
- 中国食物成分表2020年最新权威完整改进版
- 推动国土资源领域生态文明建设
- 给水管道冲洗和消毒记录
- 计算机软件专业自我评价
- 高中数学必修1-5知识点归纳
- 2018-2022年中国第五代移动通信技术(5G)产业深度分析及发展前景研究报告发展趋势(目录)
- 生产车间巡查制度
- 2018版中国光热发电行业深度研究报告目录
- (通用)2019年中考数学总复习 第一章 第四节 数的开方与二次根式课件
- 2017_2018学年高中语文第二单元第4课说数课件粤教版
- 上市新药Lumateperone(卢美哌隆)合成检索总结报告
- 递归
- 调用
- 嵌套
- 函数
- 语音
- 2018青春活力风格五四青年节PPT通用模板
- 探讨给水排水设计中的几种节水措施
- 产品经理实用工具【7】-客户端原型GUI Design Studio
- 唯品会的商业模式创新一唯品会介绍
- 英雄联盟S4 符文配置详解
- GPS卫星定位原理
- 德银中国收缩零售银行业务
- 2009年国家公务员考试行测真题
- 教师要学会倾听
- 2016澳大利亚国立大学的预科
- 网上支付与结算_期末复习大纲
- 哈尔滨市棚户区改造项目房屋拆迁补偿相关政策的规定
- 《长江七号》电影赏析
- Unit 11 make sb adj ;
- 埃迪·雷德梅尼出席欧米茄洛杉矶尊享晚宴,共庆品牌荣耀时刻
- 初中英语语法口诀大全
- (完整版)变压器短路电流计算
- 十八大报告知识竞赛题含参考答案
- 教师到企业挂职锻炼一套表格(完美表格)
- 经皮肾交感神经去神经化治疗难治性高血压的护理