递归调用教学设计_第1页
递归调用教学设计_第2页
递归调用教学设计_第3页
递归调用教学设计_第4页
递归调用教学设计_第5页
全文预览已结束

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、C语言递归调用教学设计教学目标及依据:根据教学大纲和本节学习重点,结合学生知识现状,使学生学会使用和设计递归函数去解决较复杂的问题。教学重点难点:递归函数的定义、递归问题的分类、递归函数设计的一般步骤理解递归函数的内涵、确定递归结束条件。搞清楚函数递归调用的运行轨迹和各层调用中参数和变量的值是真正掌握递归的关键。教学方法及依据:依照五星教学方法,结合游戏激发学习兴趣,巧解概念,然后进行例题分析,最后进行实验在解决实际问题中跟进一步的掌握知识。教学手段:多媒体课件及教学视频。教学课时:理论两课时+实验一课时教学过程:1、 激发旧识:在上课之前先让学生回去复习函数的知识,清楚的掌握函数的定义,函数

2、的参数,函数的值,函数类型等知识为递归调用做好准备。2、 示证新知:在学生熟知已学过的函数知识后就可引出要学习的递归调用进行学习,这一步骤也是一个承上启下的关键,在这一部分中学生因在老师的带领下学习递归调用,在学习过程中可以结合游戏的方式来让学生来扮演递归运行轨迹中各层次的调用函数通过学生之间的提问和回答来模仿函数之间传递的数据然后把游戏过程表示成递归公式。最后写出程序。通过这样的过程。学生很容易搞清楚函数递归调用的运行轨迹和各层调用中参数和变量的值从而能更好地理解和掌握递归。递归函数的基本知识:在这一部分老师通过之前已经做好的课件给学生讲解递归函数的基本知识。递归函数概念:递归函数即自调用函

3、数,在函数体内部直接或间接地自己调用自己,即函数的嵌套调用是函数本身。递归函数的形式:直接递归调用:函数中出现调用函数本身间接递归调用:间接递归调用是指函数中调用了其他函数而该其他函数却又调用了本函数。递归条件:须有完成函数任务的语句个确定是否能避免递归调用的测试一个递归调用语句先测试,后递归调用。设计递归函数分治法(分割求解)后置递归法回溯法分别讲授这三种方法的思想在接下来具体程序的讲解中再融会贯通直接递归调用:在课堂授课时,教师在面对在座的一列学生时(假设这列学生有5名),问最后一名学生,即第5名学生。他和他前面这一列学生的年龄总和是多少(假设学生之间不知道相互的年龄),这时第5名学生要知

4、道他和他前面这一列学生的年龄总和,就需先向他前面的第4名学生提相同的问题第4名学生又需向第3名学生提相同的问题,依次类推,直到最前面的第1名学生。这时第1名学生前面已无其他学生,这时他只需将自己的年龄告诉后面的第2名学生。第2名学生将前面同学的答案加上自己的年龄然后把结果告诉后面的第3名学生,依次类推,第5学生将第4名学生的答案加上自己的年龄,再告诉教师,教师就可以知道这列学生年龄的总和。上述游戏中求第n个学生和他前面这一列学生年龄总和的功能可用递归函数totalAge(n)来实现算法可表示为下面的递归公式。广返回myAge+totalAge(n-1)n>1totalAge(n尸,给出程

5、序如下所示:返回maAgen=1#include<stdio.h>#include<string.h>inttotalAge(intn1/用于求第n个学生和他前面这一列学生的年龄总和inttotal,myAge变量myAge表示第n个学生的年龄printf("进入totalAge(%d)kn”,n);prinf("请输入第%d排学生的年龄,n);scanf("%dt.,&myAge);if(n>1)total=myAge+totalAge(n-1);elseif(n=l1递归结束条件total=myAge;printf(&qu

6、ot;从totalAge(%d)qI1%dkn”,n,tota1);getehO;retumtotal;voidmainOintm:prinf(”请输入该列学生的人数:”);scarf("%dt.,&m);if(m<-0)prinf(学生人数不能小于1个人!Xn");else'printf("该列学生的平均年龄为:%d、Il",totalAge(m);在给出程序后老师就回根据这个程序和刚刚学生参与的游戏给出一个整个过程的递归进程图加以具体解释来让学生更易理解递归的概念明白递归是由回推和递推两个阶段组成以及递归为什么必需要有结束条件。

7、给出如下递归分析图:第J排学生递归结束返回202r _18返回3Q了 19矍三piotiJAged)第2排学生S0UlAgc(2)一第3排学生返回TtotalAgeQ)第4排学生返回本JT;hA酗4)第5排学生教师和主函数间接递归调用:教学时让10名同学坐成2列5排其中5名男生一排,5名女生一排教师向最后一排的两位学生提与上题相同的问题.并规定每排男生只能向上一排女生提相同的问题.女生只能向上一排男生提相同的问题最后教师将最后一排两位学生的答案相加,即为这10名同学的年龄总和。上述游戏中从第n排女生处得到答案可用递归函数Ftota1Age(n卜实现而从第n排男生处得到答案可用递归函数Mtota

8、lAge(n)来实现,算法可表示为下面的递归公式,返回myAge+Mtota1Age(n-1)(n>1)Ftota1Age(n)=返回myAge(n=1)返回myAge+Ftota1Age(n-1)(n>1)Mtota1Age(n)=V返回myAge(n=1)程序如下所示:#inc1ude<stdio.h>#inc1ude<string.h>intMtota1Age(intn);intFtota1Age(intn);intMtota1Age(intn)/用于求第n排男生处的结果intmyAge/变量myAge表示第n排男生的年龄inttotal;,/变量to

9、tal表示第n排男生处的结果prinf("进入Mtota1Age(%d)n”,n1;prinf('请输入第d排男生的年龄I1,n);scanf(”d”,&myAge);if(n>1)total=myAge+FtotalAge(n-一11;elseif(n=l1,/递归结束条件total=myAge;prinf(”从Mt0talAge(d)中返回d、ll”,ntota1);getch0;returntotal;intFtotalAge(intn)/用于求第n排女生处的结果intmyAge/变量myAge表示第n排女生的年龄inttotal:,/变量total表示第

10、n排女生处的结果prinf(”进入otalAge(d)kn",n);prinf(”请输入第d排女生的年龄I,n);scanf(”d&myAge);if(n>1)total=myAge+MtotalAge(n-1);elseif(n=11)/递归结束条件total=myAge;prinf(”从Fl0tage(d)中返回d、ll”,n,tota1);getch0;retumtotal;voidmain0intm:prlntf('请输入排数:”);scanf(”d,m);m<=0)prinf("学生不能少于1排!Xn"1)elseprintf

11、(”学生的年龄总和为:dn",MtotalAge(m)+Ftota一Age(m);间接递归由于相对较为复杂执行过程中出现函数调用的交叉和循环,所以这部分内容,很多教师不讲授我们通过游戏的方式使看起来复杂的过程变得生动和易于理解。可以通过以下图结合刚刚的程序和游戏更具体形象的给学生讲解。递归结束_-I比例推学生ptotalAgg(口-talAgdI)36J7yGsr"!*|第之修攀不FtMBlAsq眄2)*匚®*541(fl|第X持学生FWAgp(立)打匚什包第4%学生FIXA酗4二二冬二二MlotalAj.4J19L却|第5谆学生MluudAjiM)T现93二.F

12、WHA箱用讪圻主的敷,的更1的'3、尝试应用:在两个理论课时之后紧跟着安排上机实验巩固理论课上学到的新知识,在解决实际问题中得到提高。因为在理论课上引进通过游戏给学生具体的讲解了递归函数的注意事项和特点还有怎么设计一个递归函数,并通过游戏让学生也参与进来进行具体的程序讲解。所以在上机实验的时候可以再出几个类似的例子,但是,可以在难度上增加一点,这样可以让学生在解决实际问题中吸收新知识,达到能更好的运用解决实际问题的目的。4、总结归纳:在上机实验结束前学生将自己设计的程序上交给老师,老师在审阅每个同学的作业后给予评价,指出学生在程序中表现出来的不足和亮点,给学生提出意见。最后针对整个班级的编程状态给出一个全面的建议,提出大多数人都会犯的错误,给出建议加以改进,最后交上一份比较完整的程序。5、融会贯通:在最后课程实践中给出综合性强的题目让学生利用递归来设计程序实现实际问题中设计的功能,这样不仅仅是让学生掌握递归调用的知识还能将之前所学的知识都运用上起到一个整体融会贯通的效果自我评价:整体教学过程的框架和步骤基本上是根据五星教学法设计的,中间通过做游戏的方式引入递归的概念让学生来扮演递归运行轨迹中各层次的调用函数通过学生之间的提问和回答来模仿函数之间数据的传递使原来枯燥的教学变得活跃和有趣学生在游戏中轻松

温馨提示

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

评论

0/150

提交评论