《递归算法的实现》教学设计

刘莉莉老师

《递归算法的实现》教学设计

  一、教材分析

  “算法的程序实现”是高中信息技术教育科学出版社《算法与程序设计》选修模块第三单元 的内容,本节课是“递归算法的程序实现”,前面学习了用解析法解决问题、穷举法解决问题、在数组中查找数据、对数进行排序以及本节的前一小节知识点“什么是自定义函数”的学习,在学习自定义函数的基础上,学习递归算法的程序实现是自定义函数的具体应用,培养学生“自顶向下”、“逐步求精”的意识起着重要的作用。

  二、学情分析

  教学对象是高中二年级学生,前面学习了程序设计的各种结构,在学习程序设计各种结构的应用过程中,培养了用计算机编程解决现实中的问题,特别的学习循环语句的过程中,应用了大量的循环结构进行“递推”算法。前一节课学习了如何自定义函数,在此基础上学习深入学习和体会自定义函数的应用。以递推算法的逆向思维进行求解问题,在学习过程中体会递归算法的思想过程。多维度的思考问题和解决问题是提高学生的学习兴趣关键。

  三、教学三维目标

  知识与技能:

  1、理解什么是递归算法,学生用递归算法的思想分析问题

  2、能够应用自定义函数方法实现递归算法的编程

  过程与方法:

  学生参与讨论,通过思考、动手操作,体验递归算法的方法

  情感态度与价值:

  结合数学中的实例,激发学生的数学建模的意识,培养学生多维度的思考问题和解决问题。

  四、教学重点与难点

  重点:

  理解什么是递归算法,学生用递归算法的思想分析问题

  应用自定义函数方法实现递归算法的编程

  难点:

  应用自定义函数方法实现递归算法的编程

  五、教学策略教

  递归算法的实现思想是比较抽象,比较理论化的教学内容。本着培养学生的发现问题、分析问题、解决问题的意识与能力入手。知识主要是靠学生学会的,学习就是发生在学生头脑的建构。因此,教师必须明确学生是学习的主体,研究学生学习的真实心理活动,分析其认识过程、机制及心智变化。确定教学方法。

  六、教学环境

  网络教室,教学软件VB,大屏幕投影,音响播放视频

  七、教学资源准备

  从本学科的特点(学生可能不会花太多的时间进行知识的记忆和拓展学习)、学生的认知水平及学习心理特征(做自己可能做到的事,如果感觉到繁杂自己很难实现可能会放弃),为更好的激发学生的学习动机与信心,为保持学生的学习激情,不可能每位同学都喜欢程序设计,可能因素比较多,特此在教学过程中我设计了学生学习支持材料(智能化半成品加工程序),目的是为了学生在有限的课堂中能清楚的了解算法与程序设计思想和方法。

  八、教学过程

  (一)创设情境,提出课题

  师:上课之前我问同学们一个问题,平时你们上体育课是怎么报数的? 生:1、2、3、4、5、……

  师:除了队列中第一位同学报1以外,每一位同学报出的数字是怎么得出来的?(推算!)(请看视频!问你们报数是不是这样?)

  师:黑板板书“推算———>(最后一位同学所报的数是前面同学一步步推出的结果)一步步的推出结果”这就是我们常用的递推算法。

  师:今天我给同学们介绍一种你们没见过的报数方式(请看视频)

  师:引导学生观察并讨论视频(这个报数方式,被问的同学将问题推下去——>一步步的推——>底端——>答案一步步的返回一直到结束)这就是本节课我们学习的递归算法思想。

  设计意图:激发学生学习求知欲,并初步奠定“递归算法”思考分析问题的方法。

  (二)启发主体,导出递归算法程序设计思想

  (1)展示题:

  小猴吃桃:

  有一天小猴子摘若干个桃子,当即吃了一半还觉得不过瘾,又多吃了一个。第二天接着吃剩下桃子中的.一个,仍觉得不过瘾又多吃了一个,以后小猴子都是吃尚存桃子一半多一个。

  问题一:到第3天早上小猴子再去吃桃子的时候,看到只剩下一个桃子。问小猴子第一天共摘下了多少个桃子?

  设计意图:鼓励学生进行推算,这里只设3天目的是简化题的难度,让学生有信心深入本思考,初步培养推算的思想。(根据学生思维特点,这一阶段思维主要在于习惯性的数学推算环节)

  问题二:到第10天早上小猴子再去吃桃子的时候,看到只剩下一个桃子。问小猴子第一天共摘下了多少个桃子? (学生思考,培养学生从数学思维走入程序设计推算的思维)。

  (2)大屏幕展示递推算法的推算动画演示过程

  (3)根据推算10天吃桃动画演示过程得出的数据和本题大意

  (3)根据推算10天吃桃动画演示过程得出的数据和本题大意引导学生讨论并建立数学模型:

  假设第days ,days<=10天的桃子数为tao(days)那么

  tao=10 days=1

  tao(days)=(tao(days+1)+1)*2 n<10

  (4)(提示学生回忆今天老师介绍的报数方式)通过数学模型来看这个问题?引导学生换个思路来思考这道题的问题求解,第10天的桃子数为1个,求第一天的桃子数?

  设计意图:培养学生分析问题、解决问题能力,煅练学生“数学建模”,让学生通过实践和思考找出本题的关键。并引出递归算法的解题思想。

  (三)深入学习递归算法的实现

  (1)展示递归算法的动画演算过程,分析演算过程。通过演算过程,引导学生总结出,递归算法的两个必备条件:

  1、递归分为递推与回归两个过程

  2、递归必需要有结束条件

  3、递归算法的实现方式:递归算法是数值层层调用实现的,函数先由上向下调用,当达到最底层后,再将数值层层向上返回。(在函数层层调用的过程中,参数的改变)

  (2)通过上面的分析,大至的递归算法实现思想我们了解了,那么要思考在编程过程中如何解决两个问题?

  1、怎么将问题推下去?

  2、怎么将结果回归?

  设计意图:在学生初步认识递归算法的演算过程及特点以后,提出递归算法程序设计实现的关键问题,层层深入的循导学生思考问题,培养学生分析和发现问题的能力。

  (3)展示递归算法自定义函数框架,并分析。

  设计意图:为下面进行操作练习奠定思维框架。

  (四)学生操作

  学生基本了解递归思路和递归实现的程序设计框架后开展操作练习,教师巡回指导!

  (五)总结提高

  总结操学生操作,介绍递归算法自定义函数的常用框架!

  设计意图:为下面学生自主练习奠定思维框架。

  (六)回顾视频1和视频2比较提高,

  引导学生能过视频分析,讨论出“两个视频报数同学的动作的不同”1、视频1的同学在没有得到答案的时候就头部转向所问的同学等待,2、视频1和视频2的共同点是“完成报任务”的时候头部都向前看!)

  总结出:递归算法使得计算机资源耗费大,所以效率比较底(常驻内存的数据比较多)。

  设计意图:通过视频模拟算法的操作过程,让学生能够会意递归算法在计算机内部操作的内含。培养学生发散思维,理论也是来源于生活,在学习理论中学会生活,在生活中学会思考。

  (七)教材使用

  1、分析这个数例:1、1、2、3、5、8、13、……求数例中第十二个数的值是?

  2、引导学生分析并建立数学模型:

  3、此题是我们教材P68的例题“免子繁殖问题”,由于教材分析很详细所以我想本题留给同学们课后思考,并研究递归算法实现程序与非递归算法实现程序。下节课上机调试!

  设计意图:分析问题并建立数学模型,冲破学生学习的心理障碍,提高学生使用教材信心,并给学生提供可参考的学习资源和个性发展的空间。

  (八)课堂练习

  设计意图:巩固课堂学习内容

  (九)课堂小结

  设计意图:引导学生回顾并明确本节课的学习目标

  (十)下课前提出问题

  递归算法使得计算机资源耗费比较大,所以效率比较低(常驻内存的数据比较多)递推算法也能实现,为什么还要使用递归算法呢?下节课探讨(汉诺塔问题求解)

  设计意图:让学生带着问题回家,下节课又带着问题回到课堂,激发学生可持续学习的兴趣。

  获奖情况:2007年全国高中信息技术课展评一等奖作品。