C语音(函数的嵌套调用、递归调用)
更新时间:2023-03-28 15:43: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语音(函数的嵌套调用、递归调用)03-28
导数有关知识点总结、经典例题及解析、近年高考题带答案06-09
存在主义教育思潮10-18
北京大学地球与空间科学学院空间物理学2015年考博英语暑期备考提分“战术”05-23
教育事业统计数据质量核查自查报告05-11
高中历史教学新体验-2019年精选文档02-29
彩票投注站申请书08-27
最新军事训练法规理论题05-19
- 四年级下册科学试卷
- BeTwin拖机超详细步骤图文教程
- 微波技术基础课程学习知识要点
- FIR外文翻译汉文
- 劳动防护用品配备情况说明
- 第四章 学习理论
- 教师到企业挂职锻炼一套表格(完美表格)
- 2004年北京大学CCER考研微观经济学及其应用试题以及答案解析
- 6西格玛改善案例解析
- 十八大报告知识竞赛题含参考答案
- 新一代安全网关SG-6000-G2120
- 新课标部编RJ人教版 三年级语文 下册第二学期春季 备课素材 第七
- 2011保险法司法解释解读
- 商标异议答辩范本
- 埃迪·雷德梅尼出席欧米茄洛杉矶尊享晚宴,共庆品牌荣耀时刻
- 初中英语语法口诀大全
- 网络课程中华诗词之美 叶嘉莹
- STM32F107系列单片机USB通信的用法解析
- 《长江七号》电影赏析
- 2012年全国高考理宗卷物理部分试题及答案(真正的word版)
- 递归
- 调用
- 嵌套
- 函数
- 语音
- 《药品经营许可证管理办法》
- 网上支付与结算_期末复习大纲
- 2009年国家公务员考试行测真题
- 初一上学期班主任工作计划
- 中石油六条禁令
- Unit 6 词组短语汇总真
- 第八章 生物群落的分类与排序
- 2013夏季美发店给顾客的护发养生保健短信
- 静压机压力对照表
- 观《海洋天堂》有感
- 小学信息技术教材第三册参考资料
- 浅谈室内空气中甲醛的测定方法
- 住房公积金封存(启封)申请表
- (完整版)变压器短路电流计算
- 经皮肾交感神经去神经化治疗难治性高血压的护理
- 12 危险化学品泄漏突发事件应急专项预案
- 提高民办高职院校《思想道德修养与法律基础》课教学实效性的思考
- ICP-OES常用元素谱线与检测极限
- 公共基础知识复习资料:宪法考点汇总彩色笔记有助记忆(5)
- 2014年北大金融硕士考研经验分享