学知识,解决实际问题。
(3)从简单问题出发,逐步增加难度,增强解决问题的能力。
情感态度与价值观:
(1)理解递归的意义,学会将大问题分解为小问题的思想方法。
(2)在解决问题的过程中进一步培养和提升学生的分析、归纳、总结、解决问题的能力。
(3)培养学生的主动探究分析解决问题的能力。
四、教学重点与难点
学习重点:
掌握
能针对具体问题找到递归出口、总结归纳出递归函数关系式。
学习难点:
正确高效的应用递归法分析、解决实际问题。
五、教学策略
情境教学法、分组讨论法、任务驱动法
六、教学环境及资源准备
教学环境:
多媒体机房、因特网
教学资源:
课件、电子档案袋
七、教学过程(可以用嵌套表格呈现具体内容)
教学环节(第1学时)
教师活动
学生活动
用时
新课导入
大屏幕展示一段视频:(问题1)有5个人坐在一起,问第5个人多少岁?他说比第4个人大2岁。问第4个人岁数,他说比第3个人大2岁。问第3个人,又说比第2个人大2岁。问第2个人,说比第1个人大2岁。最后问第1个人,他说是10岁。请问第5个人多大?
(设计意图:利用学生的心理特性,激发学习兴趣,引出递归的概念,导入新课。)
请同学简单描述求解过程。
4
问题分析
引导学生回答问题
(1)递归必须有终止条件,终止条件是什么?
(2)列出问题1的递归关系式,age(n)函数如何定义?
(3)举例说明,哪些实际问题适合使用递归方法解决?
回答老师问题
(1) 终止条件age(1)=10
(2) 函数为:
10 n=1
age(n)=
age(n-1)+2 n>1
(3)求阶乘问题、猴子吃桃问题等。
8
算法设计
递归调用过程可以分为:先不断调用(回推),再依次退回(递推)。
上述递归调用过程表示如下:
学生在word中画出函数的调用过程图,将其存储到电子档案袋中:
5
编程实现
巡视教室,指导学生写出正确的程序,具体代码如下:
Public class ages
{
Static int age(int n)
{ if (n==1)
Return 10;
Else
Return n+2
}
Public static void main(String args[])
{ System.out.println(“age(5)=”+age(5);)
}
}
学生尝试写出程序代码,不断的修改,调试,直到运行无误,将其存入电子档案袋“我的作品”中,并以定稿形式发布。递归法(参照课本129页,阶乘程序代码)
8
任务扩展
布置任务,教材第133页“实践与思考”第1题
教师给予指导。
自主分析,确定递归函数关系式和递归出口,试着写出程序。递归法
12
讨论、总结
1.学生通过分组讨论,回答下列问题:
(1)符合什么条件的问题,适合使用递归法解决?
(2)递归算法的设计步骤分为四个步骤?
2.教师对学生回答,给予归纳、总结。
8
教学环节(第2学时)
教师活动
学生活动
用时
温故知新
通过任务,回顾上节课知识:
(问题2)斐波纳契(Fibonacci)函数问题。有一对兔子,从出生后第3个月起每个月都生一对兔子。小兔子长到第3个月后每个月又生一对兔子。假设所有兔子都不死,问第20个月兔子的总数是多少?
学生填表,回答问题,教师巡查指导(见“关键环节提炼”)
自主分析,完成下列问题:
(1) 归纳出递归函数
(2) 确定递归出口
(3) 填写程序(关键环节提炼)
12
提出问题
大屏幕展示梵塔图片,教师讲述梵塔故事的来历,以此引入新课。
(设计意图:利用学生的心理特性,激发学习兴趣,引导学生自己动手解决问题,并帮助他们分析问题、归纳问题。)
本文来自电脑杂谈,转载请注明本文网址:
http://www.pc-fly.com/a/jisuanjixue/article-25299-1.html