共1学时
1教学目标
知识与技能:
理解什么是递归算法,学生用递归法的思想分析问题
能够应用自定义函数方法实现递归法的编程
过程与方法:
学生参与,通过思考、操作,体验递归法的特点
情感态度与价值:
结合生活中的实例,激发学生的数学建模的意识,培养学生多维度的思考和解决问题
2学情分析
本节是上海科技教育出版社出版的信息技术选修1《算法与程序设计》第三章第4节的内容,前面学生已学习了用解析法、穷举法解决问题、在数组中查找数据、对数进行排序等,这节的递归法是程序设计算法当中的一个难点,常用于解决具有一定规律性的问题,而这种潜在的规律是通过问题描述过程经过合理推断逐步显现出来的,学生在数学、物理等学科领域研究问题经常要用到递归法。本节教材编写力求简洁易懂,没有直接给出递归的原理和形成过程,而是设计了一个典型的“兔子问题”,让学生通过经历用递归法求解“兔子问题”的过程,了解递归法的基本思想和原理,在学习指引中给出递归法的基本思想及其应用场合,再通过递归法的应用举例,让学生掌握递归法的应用过程,理解递归法的基本思想,进一步了解递归法的应用场合。这节课的学习要在学生学会自定义函数和过程的基础上进行。计划用2课时进行,这次是第1课时的教学。
3重点难点
掌握递归法的基本概念、基本思想,运用递归法解决问题的过程是本节的重点内容,其中分析问题初始条件和利用初始条件寻求解决问题的规律的过程是重点中的难点。
4教学过程
4.1
第一学时
4.1.1教学活动
活动1【导入】1、设置情景,引入课题
我们先来看一个故事:从前有座山,山上有座庙,庙里有个老和尚在给小和尚讲故事,他说
“从前有座山,山上有座庙,庙里有个老和尚在给小和尚讲故事,他说’
‘……”.
再看一个有趣的例子:如果甲、乙两面镜子相互面对面放着,你往中间一站,两面镜子里都有你的千百个“化身”!
甲镜子里有乙镜子的像,乙镜子里也有甲镜子的像,而且这样反反复复,就会产生一连串的“像中像”。
这种直接或间接调用自身的现象称为递归,那么如何来正确理解递归及其执行过程?如何用程序实现递归呢?这一节我们就来共同学习一下这方面的知识。(这先让学生有个感性的认识)
活动2【活动】2、完成活动“兔子问题”
(1)提出问题:兔子问题
(2)要求学生手工计算每个月的兔子对数,填写表格,寻找这些数据之间的关系,写出数列中的计算通式,分析该数列的特点。(斐波那契数列的有关知识)
(3)根据教材内容完成“兔子问题”的程序编写。
(4)思考:加大输入的月数,程序运行情况如何?如果起始的两个月份兔子数量不是1、1,而是其他数值,如2、3,那么该如何修改程序呢?
(5)在VB中调试完成该程序,按F8键逐句运行程序,观看执行步骤,记录每一次调用函数Fi后Fi的返回值。
根据观察和记录,理解递归执行过程,完成课本142页的示意图。
活动3【讲授】3、介绍“学习指引”中的递归法
在讲解时要紧紧扣住描述数列规律的算式,在充分复习函数和过程的基础上讲解递归法,让学生深入理解递归的两个阶段:递推和返回。
在调用一个过程或函数时,又出现直接或间接调用该过程或函数本身,称为过程或函数的递归调用。
递归程序的执行过程可分为两个阶段,递推和返回。
(1)、递推阶段的工作是不断地将原问题转化为另一个类似的新问题,直到某个新问题能根据已知条件计算出结果为止。
(2)、返回是递推的逆过程,返回阶段从递推结束处开始,一步一步向回推算结果,直到计算出原问题的结果为止。
活动4【练习】4,课堂举例
1)、阅读下列程序,说说程序实现的功能
Private
Sub
Form_click()
Call
reverse
End
Sub
Sub
reverse()
Dim
number
As
Integer
number
=
Val(InputBox("请输入整数,输入0结束"))
If
number
<>
0
Then
Call
reverse
End
If
Print
number
End
Sub
活动5【讲授】课堂小结
递归的实质就是反复调用函数或过程自己的过程。使用递归可以更自然地反映问题的求解过程,程序结构也很简洁。而递归的关键在于正解地设置递归的终止条件。但递归法也有缺点,因为它需要不断地、反复地进行过程调用,所以将占用大量的CPU处理时间,且每次的递归调用都会产生过程的一个副本,这将消耗大量的内存,造成程序执行缓慢,甚至无法执行。因此,当递归法能较方便地转换成递推法时,通常按递推法编写程序
活动6【作业】作业布置
用递归法求解两个整数的乘积。(提示:M
N可以看作M+(N-1)
M,老师将程序框架做好,学生只定义函数部分)