汉诺塔问题与递归思想教学设计.docVIP

  1. 1、本文档共8页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
. . 一、教学思想(包括教学背景、教学目标) 1、教学背景 本课程“递归算法”,属于《数据结构与算法》课程中“栈和队列”章节的重点和难点。数据结构与算法已经广泛应用于各行各业的数据存储和信息处理中,与人们的社会生活密不可分。该课程是计算机类相关专业核心骨干课程,处于计算机学科的核心地位,具有承上启下的作用。不仅成为全国高校计算机类硕士研究生入学的统考科目,还是各企业招聘信息类员工入职笔试的必考科目。数据结构与算法课程面向计算机科学与技术、软件工程等计算机类学生,属于专业基础课。 2、教学大纲 通过本课程的学习,主要培养学生以下几个方面的能力: 理解递归的算法; 掌握递归算法的实现要素; 掌握数值与非数值型递归的实现方法。 根据学生在学习基础和能力方面的差异性,将整个课程教学目标分成三个水平:合格水平(符合课标的最低要求),中等以上水平(符合课标的基本要求),优秀水平(符合或超出课标提出的最高要求)。具体如下表: 水平等级 衡量标准 合格 可以正确理解递归算法的概念,并理解递归算法的递归分解和递归结束条件设计。 中等以上 在合格水平的基础上,能熟练掌握数值型问题的递归算法设计;理解非数值型问题的递归算法设计。 优秀 在中等水平基础上,可以独立分析并实现数值与非数值型问题递归的设计,解决复杂问题求解的递归方法。 二、课程设计思路(包括教学方法、手段) “递归算法”课程以故事引入、案例驱动法、示范模仿、启发式等多元化教学方法,设计课程内容。具体的课堂内容如下所示: 教学环节 课堂内容设计 教法方法 导入新课 引导学生 学习热情 明确 教学目标 课程教学 课程总结 思考拓展 一、故事导入:结合故事突出主题 生活中大人给小孩讲故事时,讲了掩耳盗铃、入木三分后,若实在没故事了,就会讲说:从前有座山,山里有个庙,庙里有个老和尚讲故事,讲的什么呢?讲的是从前有个山,山里有个庙,庙里有个老和尚讲故事,讲的什么呢?这就是一个典型的递归故事,可以无限次的递归下去。 可以把这个故事比喻成函数的递归调用,但和故事不同的是,在程序设计中,不可能无限递归下去,必须要有递归的结束条件。而且每次递归都应该朝着能够结束的条件去运行,直到满足条件时终止递归调用。 重点学习内容: 1.理解递归的概念; 2.掌握递归算法的实现要素; 3.掌握数值与非数值型递归的实现方法。 二、案例引入:结合实例“阶乘”讲解递归算法的特征和设计方法。 编写代码: int fact(int n) { int value; if (n==0) value=1; else value=n*fact(n-1); return value; } main() { printf(%d,fact(5)); } 分析执行过程: 前提: 原问题可以层层分解为类似的子问题,且子问题比原问题规模更小; 规模最小的问题具有直接解。 设计方法: 寻找分解方法:将原问题转化为子问题求解; 设计递归出口:根据规模最小的子问题确定递归终止条件。 三、案例引入:结合故事突出主题 结合hanoi典型实例,使学生能深入理解递归函数的设计方法,以及在实际问题中的应用,培养学生分析问题的能力。 设有三座塔座(A、B、C),在一个塔座(设为A)上有64个盘片,盘片不等,按大盘在下,小盘在上的顺序依次叠放。现要将A塔上的盘片借助于B塔,移到C塔上并保持同样顺序叠排,移动盘片时必须遵守以下规则: 1)每次只能移动一个圆盘; 2)圆盘可以插在A、B、C任意一个塔座上; 3)任何时候都不能将一个较大的圆盘放到 较小的圆盘之上。 实物演示:根据一段动画演示,观察并共同分析hanoi的移动步骤,并总结递归函数的分解方法和递归出口。 设计思想(三步法): 1)把A塔上的n-1个盘片借助C塔移至B塔; 2)把第n个盘片从A塔移至C塔; 3)把B塔上的n-1个盘片借助A塔移至C塔。 递归出口:当n=1时,无需借助,直接移动即可。 编写代码:根据算法设计思想编写程序代码。 #include stdio.h int count=0; void move(int n,char x,char z) { printf(%d:%c--%c\n,n,x,z); count++; } void hanoi(int n,char x,char y,char z) { if(n==1) move(1,x,z); else { hanoi(n-1,x,z,y); move(n,x

文档评论(0)

hkfgmny + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档