内容正文:
教学设计
课程基本信息
学科
信息技术
年级
高二年级
学期
秋季
课题
《递归》
教科书
书 名:信息技术选择性必修1《数据与数据结构》
出版社:广东教育出版社
教学目标
1.理解递归算法的概念、基本思想及其编程实现原理。
2.学会分析并建立合理的递归数学模型。
3.通过阶乘、斐波那契数列的案例,理清递归算法解决问题的执行过程,能够自主设计递归函数解决实际问题。
教学重难点
教学重点:
1.递归算法的基本思想及其编程实现原理。
2.递归算法数学模型及其程序结构。
3.python编程递归算法的实际应用。
教学难点:
1.递归算法数学模型及其程序结构。
2.python编程递归算法的实际应用。
教学过程
一、导入新课
播放一个简单易懂的生活情景动画《电影院找座位》,引入递归的概念。
(一)教师:看完了动画,同学们发现了什么特点吗?
实际上,电影院找座位的过程就是一个递归的过程,当你问前一排观众,前一排的观众又继续向前问,这个过程我们叫做“递”,即把问题不断分解为可操作性的小问题。第一排的观众可以直接得到答案后,接下来要把答案传递给第二排的观众,去解决他的问题,第二排的观众计算出自己的排数后再传递给第三排,以此类推,直到传递回自己的位置,这个过程我们叫做“归”,即把小问题的结果返回给大问题,达到最终目的,整个过程连接在一起,就叫做“递归”。其中,在分解的过程中,一直到第一排就结束了,它已经到尽头了,不能再往前推了,我们把它称之为递归终结条件,或递归出口。中间的每一个环节都叫做递归的公式。
(二)总结递归的概念:大问题的解决中嵌套着与原问题相似的规模较小的问题,这种问题的解决方法在计算机科学中称为递归,它通过函数自己调用自己来实现,即一个函数在其定义中直接或间接调用自身的一种方法。
2、 讲授新课
(一)通过阶乘的例子,理解递归算法的执行过程。
1.通过阶乘的定义引导学生写出阶乘的函数关系式,并分析里面包含的递归规律:
当n=1时,f(n)=1(递归结束条件),当n>1时,f(n)=n*f(n-1 )为递归公式,再进一步引导学生写出阶乘问题的递归程序代码:
def f (n):
if n == 1:
return 1
else:
return n* f(n-1 )
print(f(5))
2.通过动画演示程序在计算F(5),即5的阶乘运算的全过程,演示完动画后,再总结递归的执行过程,就是指在递归终止条件满足之前,层层推下去,在递归终止条件满足之后,再层层回归的全过程,以此加深学生对递归的理解。
3.实操演示。
(二)以斐波那契数列为例,体验递归算法实现的整个过程。
1.分析斐波那契数列数列的来源:斐波那契是意大利数学家,他提出了一个有趣的兔子繁殖的问题:一对刚出生的小兔子,一个月后就能成长为成年兔,再过一个月后(即第三个月起),就每月生一对兔子。新生的兔子也按这个规律繁殖。现在仅有一对刚出生的小兔子,问在没有兔子死亡的情况下,一年后总共繁殖成多少对兔子。根据题意,通过一个图来模拟演示,前几个月兔子的繁殖情况,并汇总成表格,如下图所示:
2.通过这个表格数据,引导学生发现规律,逐步建立递归算法的数学模型。
教师:请同学们思考一下,通过这个表格,可以发现每个月兔子数量之间有什么关系呢?
学生:老师,通过观看表格中的数据,可以发现,兔子的数量随着时间增长的越来越多,而且每个月的大兔子数量一定等于上个月的兔子总数,,,,而每个月的小兔子数量一定等于上个月的大兔子数量,也就是前一个月的兔子数量总和。从第三项开始,后面的数总是等于前两个数之和。
教师:由表格可知,当n=1时,f(n)=1,当n=2时,f(n)=1,当n>2时,f(n)=f(n-1) + f(n-2),其中,当n=1时,f(n)=1,当n=2时,f(n)=1,为递归终止条件,当n>2时,f(n)=f(n-1) + f(n-2)为递归公式。 由此,可以可以得到斐波那契数列的程序代码为:
def f(n):
if n == 1 or n == 2:
return 1
else:
return f(n-1) + f(n-2)
print(f(12))
3.演示程序代码在执行函数f(5)的过程。(先逐层分解问题,直至递归终止条件获得答案后,再逐层返回答案。)
4.实操演示。
三、课堂小结
四、课后作业
递归算法求年龄:有5个人坐在一起,问第5人多少岁?他说比第4个人大两岁。问第4人的岁数?他说比第3个人大两岁。问第3个人,又说比第2个人大两岁。问第2个人,他说比第1个人大两岁。最后问第1个人,他说10岁。请问第五个人多大?
(一)写出年龄问题的递归终止条件。
(二)请写出年龄问题的递归公式。
(三)请尝试编写年龄问题的程序代码。
学科网(北京)股份有限公司
$$