5.4 函数的嵌套调用(教案)-《C语言程序设计》同步教学(电子工业出版社)

2024-07-10
| 3页
| 109人阅读
| 60人下载
普通

内容正文:

教案用纸 第 6 周 总第 18 次 学时:2 教学班级: 课程:C语言程序设计 授课教师: 课题:5.4 函数的嵌套调用 5.5 函数的递归调用 教学方法:多媒体演示、启发 教具:计算机 教学目标:使同学们巩固函数的调用及数据的传递 教学重点:函数的实际应用 教学难点:函数的递归调用 主要教学内容: 5.4 函数的嵌套调用 5.5 函数的递归调用 课后回顾: 教案用纸 导入:我们上节课学习了函数的定义和说明以及函数的数据传递,这节课我们通过上机巩固所学的函数知识。 正文: 5.4 函数的嵌套调用 C语言程序执行时都从main函数开始,在main 函数中遇到子函数调用语句,则调用该子函数,若有其他函数也可相互调用,但执行完子函数后最终必须返回主函数,直到程序结束。函数的嵌套调用是指在执行被调用函数时,被调用函数又调用了其他函数。 例如,在main函数中可以调用A函数,在调用A函数的过程中可以调用B函数;当B函数调用结束后返回到A函数,当A函数调用结束后,再返回到main函数,这就是函数的嵌套调用。其调用过程如图5-1所示。 图5-1 函数的嵌套调用过程示意图 在图5-1中,①,②,…,⑨,表示执行嵌套调用过程的序号。即从①开始,先执行main函数的函数体中的语句,当遇到调用A函数时,由②转去执行A函数;③是执行A函数的函数体中的语句,当遇到调用B函数时,由④转去执行B函数,⑤是执行B函数的函数体中的所有语句,当B函数调用结束后,通过⑥返回到调用B函数的A函数中;⑦是继续执行A函数体中的剩余语句,当A函数调用结束后,通过⑧返回到调用A函数的main函数中;⑨表示继续执行main函数的函数体中的剩余语句,结束本程序的执行。 函数嵌套调用时需要注意的以下两点。 (1)C语言程序中的函数定义都是平行、相互独立的。也就是说在一个函数定义的内部,不能定义其他函数,即函数的定义不允许嵌套。 (2)一个函数既可以被其他函数调用,也可以调用其他函数,这就是函数的嵌套调用。 5.5 函数的递归调用 函数通过其函数体中的语句直接或间接地调用自身,称为递归调用,这样的函数称为递归函数。 递归函数一般都有一个条件语句,执行语句分两部分,一个是结束递归的终值,一个是递归的返回表达式,表达式中有该函数的自身调用。 递归函数是无终止的调用自身。要避免这种情况的发生,使用递归解决的问题应满足两个基本条件: (1)问题的转化。有些问题不能直接求解或难以求解,但它可以转化为一个新问题,这个新问题相对比原问题简单或更接近解决方法。这个新问题的解决与原问题一样,可以转化为下一个新问题,……。 (2)转化的终止条件。原问题到新问题的转化是有条件的,次数是有限的,不能无限次数地转化下去。这个终止条件也称为边界条件,相当于递推关系中的初始条件。 【案例5-4】设计递归函数fact(n),计算并返回n的阶乘值。 程序分析 一个整数n的阶乘可表示为: 1 (n=0或n=1) n!= 1*2*…*n (n>1) 阶乘定义还可以表示为: 1 (n=0或n=1) n!= n*(n-1)! (n>1) 现在定义一个函数fact(n)来求n!时,可以使用如下的方式: 1 (n=0或n=1) fact(n)= n*fact(n-1) (n>1) 从上面可以看到,当n>1时,fact(n)可以转化为n*fact(n-1),而fact(n-1)与fact(n),只是函数参数由n变成n-1;而fact(n-1)又可以转化为(n-1)*fact(n-2),……,每次转化时,函数参数减1,直到函数参数的值为1时,1!的值为1,递归调用结束。 递归调用的过程如图5-2所示,假设输入n=5。 图5-2 fact函数的递归调用过程示意图 使用一个main函数调用fact求5!,如图5-2所示,倾斜箭头表示函数调用,旁边的数字表示传递的参数;下面的箭头表示函数返回,旁边的数字表示函数返回值。fact函数反复调用自身,fact(5)调用fact(4),fact(4)调用fact(3),fact(3)调用fact(2),……,参数逐次减小,当最后调用fact(1)时,结束调用,于是开始逐级完成乘法运算,最后计算出5!结果为120。 小结: 这节课我们主要通过练习题巩固了函数定义、调用以及函数的嵌套调用及递归调用,希望大家通过本节课的习题对函数能有进一步的理解。 备 注 难点:本题主要为函数的嵌套,通过本题主要弄清函数如何进行调用。 函递归调用在现实生活中的应用。 学科网(北京)股份有限公司 $$

资源预览图

5.4  函数的嵌套调用(教案)-《C语言程序设计》同步教学(电子工业出版社)
1
所属专辑
由于学科网是一个信息分享及获取的平台,不确保部分用户上传资料的 来源及知识产权归属。如您发现相关资料侵犯您的合法权益,请联系学科网,我们核实后将及时进行处理。