版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
高中信息技术选择性必修一3.4递归法表格式教案(两课时)一、教学设计依据与教材分析本课选自沪科版高中信息技术选择性必修一《数据与数据结构》第三章第四节“递归法”。递归是算法与程序设计模块的核心内容,处在分支结构、循环结构、函数定义之后,既是函数知识的综合运用,又是后续学习排序算法、遍历算法的思维基础。教材以斐波那契数列、汉诺塔等经典案例为切入点,引导学生理解“把大问题分解为同构小问题”的思维路径,掌握递归函数的两个要素:递归表达式与递归出口。递归对维的“陡坡”。学生习惯了顺序、循环的思维惯性,函数自我调用的执行方式抽象难懂,调用栈的进出过程不可见,容易造成“会写不会想、会背不会用”的学习困境。本设计将两课时定位为“读懂递归”与“用好递归”两个层级:第一课时以汉诺塔为主线突破思维难点,第二课时以阶乘、斐波那契数列、分治实例为主线训练编写能力,并讨论递归的效率与栈溢出问题。课程标准要求本模块学生能够“针对给定问题,设计算法并用程序实现,体会算法的多样性”。递归恰好是体验算法多样性的最佳载体:同一个问题可以用循环解决,也可以用递归解决,二者的对比能让学生真正理解算法选择的依据,而非机械记忆。二、学情分析授课对象为高二选修本模块的学生。学生已掌握Python基本语法、条件语句、循环语句和函数的定义与调用,能独立完成求和、求阶乘等常规程序任务。学生的困难集中在三点:一是难以理解函数调用自身的合法性,会误以为这是“死循环的错误写法”;二是无法想象多层嵌套调用中参数的变化轨迹,读程序时“跟丢”;三是缺乏将实际问题抽象为递推关系的能力,面对新问题无从下手。针对学情,教学策略确定为:以具象活动先行,让抽象思维有据可依;以可视化工具补位,让不可见的调用过程可见;以“梯度任务”驱动,让不同水平学生都能获得成功的体验。三、教学目标(一)学科知识与技能目标。学生能准确说出递归的定义,归纳递归函数必须具备的两个要素:递归表达式(递推关系)和递归终止条件(递归出口);能阅读并跟踪阶乘、斐波那契数列等典型递归程序的执行过程;能用Python独立编写简单递归程序解决数学与生活中的问题。(二)过程与方法目标。通过汉诺塔实物操作,经历“观察现象—发现规律—抽象递推”的完整思维过程;通过调用栈示意图手工推演,掌握分析递归程序执行过程的方法;通过递归与迭代的对比实验,学会根据问题特征选择恰当的算法。(三)情感态度与价值观目标。感受“化繁为简、大事化小”的递归之美,体会计算思维中分治思想的普适价值;树立严谨的编程态度,理解任何递归必须设置出口,警惕程序失控带来的资源消耗;在小组协作与展示评价中发展表达、倾听与批判性思维。四、教学重点与难点教学重点:递归的两个要素;递归程序的设计方法与执行过程的跟踪。教学难点:递推关系的抽象;多层递归调用中调用栈状态的理解。突破策略:用“照镜子”“传话游戏”“套娃”等生活化类比建立直觉;用教师可控的动画演示呈现调用栈的压入与弹出;用“先口述递推式、再翻译为代码”的两步走降低编程门槛。五、教学方法与资源准备教学方法:任务驱动法、问题链教学法、小组合作学习法、讲授与演示结合。资源准备:多媒体课件、可视化教学工具(用于展示递归调用树与调用栈)、汉诺塔实物教具若干组、学生机房安装Python3.x环境、分层任务单与课堂评价量表。六、课时总体安排┌────────┬────────────────────────┬───────────────┐│课时│核心内容│主要活动│├────────┼────────────────────────┼───────────────┤│第一课时│理解递归:定义、两要素、汉诺塔│实物操作、思维建构、││││程序阅读与跟踪│├────────┼────────────────────────┼───────────────┤│第二课时│用好递归:编写、调试、效率对比│分层编程任务、实验││││探究、总结提升│└────────┴────────────────────────┴───────────────┘七、第一课时教学过程环节一:情境导入——一面镜子里的无穷世界(8分钟)┌──────────┬────────────────────────────────┬────────────────────┐│教学行为│具体内容│设计意图│├──────────┼────────────────────────────────┼────────────────────┤│教师活动│展示两面镜子相对放置的成像照片,提问:│用真实可感的视觉现象│││为什么镜子里出现了无穷多个镜子?这种│激活学生已有经验,为│││“一个事物内部包含自身”的现象有什么特征?│“自我引用”建立直觉│├──────────┼────────────────────────────────┼────────────────────┤│学生活动│观察、自由发言,列举例子如套娃、拿自己││││的手机屏幕拍摄屏幕、文件夹中嵌套子文件夹││├──────────┼────────────────────────────────┼────────────────────┤│教师小结│这类现象的共同点是“在自身中包含自身”,│从现象上升到概念,│││在程序设计中,函数内部调用自身,就是递归│引出课题│└──────────┴────────────────────────────────┴────────────────────┘教师板书课题:3.4递归法——大事化小的智慧。环节二:新知建构——递归的定义与两要素(12分钟)教师给出递归的定义:一个函数在其函数体内直接或间接调用自身的编程方法称为递归,这样的函数称为递归函数。随后教师引入两个递推式,以可视化方式呈现:阶乘的递推关系:n!=n×(n-1)!(n≥1)0!=1斐波那契数列的递推关系:F(1)=1,F(2)=1F(n)=F(n-1)+F(n-2)(n≥3)教师提问:这两个式子有什么共同结构?学生讨论后归纳:每个式子都由两部分组成——一部分描述“如何把大问题变成小问题”,另一部分描述“小到什么程度就可以不用算了直接给出答案”。教师据此板书递归的两要素:递归表达式与递归出口,并强调:缺少出口的递归是灾难,函数会因无限自我调用而耗尽内存。教师追问生活中的对应:下课铃是“出口”,一节课一节课地上是“递推”。用此比喻强化“没有出口就永远停不下来”的观念。环节三:核心探究——汉诺塔问题中的递归思维(18分钟)┌──────────┬────────────────────────────────┬────────────────────┐│教学行为│具体内容│设计意图│├──────────┼────────────────────────────────┼────────────────────┤│教师活动│介绍汉诺塔传说:三根柱子,64个大小不同│故事营造悬念,计算│││的圆盘,需全部从A柱移到C柱,每次只能移│结果(约5800亿年)│││动一个,且大盘不能压小盘。提问:移完需│制造认知冲击│││要多少步?││├──────────┼────────────────────────────────┼────────────────────┤│学生活动│分组操作3盘、4盘汉诺塔教具,记录移动│动手操作发现规律,│││步骤与步数,尝试归纳规律│体验“化小”过程│├──────────┼────────────────────────────────┼────────────────────┤│教师引导│关键提问链:移动n个盘子,如何才能做到?│引导发现递推:│││是不是必须先把上面n-1个移到B?然后呢?│h(n)=n-1个盘上移│││移完最大的那个之后还要做什么?│+移最大盘+n-1个││││盘下移,即││││h(n)=2×h(n-1)+1││││h(1)=1│├──────────┼────────────────────────────────┼────────────────────┤│学生展示│小组汇报归纳出的递推式,其他组质疑补充│锻炼表达与批判思维│└──────────┴────────────────────────────────┴────────────────────┘教师把学生的共同结论以可视形式板书:h(n)=2×h(n-1)+1(n≥2)h(1)=1由递推式可推出通项:h(n)=2ⁿ-1教师现场用计算器验证:h(64)=2⁶⁴-1≈1.8×10¹⁹,僧侣昼夜不停每秒移一个,需要约5800亿年。学生在震撼中体会到递归表达的简洁与问题规模的庞大之间的张力。教师趁热打铁:“既然如此复杂的问题,程序为什么只需要几行代码?”展示汉诺塔递归程序(Python):defhanoi(n,a,b,c):ifn==1:print(a,"→",c)returnhanoi(n1,a,c,b)print(a,"→",c)hanoi(n1,b,a,c)学生运行程序,输入n=3,对照自己刚才的操作记录逐行验证输出,发现程序步骤与人工操作完全一致。认知冲击在此转化为思维认同:递推式完全可以“一字一句翻译成代码”。环节四:过程透视——调用栈演示(10分钟)教师用可视化工具演示fact(3)的执行过程,屏幕分三栏:左侧代码区,右侧调用栈区,中间为返回值流动区。演示过程以图示板书同步呈现:调用展开方向(先进后出地压栈):fact(3)→fact(2)→fact(1)最底层fact(1)=1,触发递归出口结果回传方向(逐层弹栈):fact(2)=2×1=2fact(3)=3×2=6教师强调两个关键认识:其一,每一次函数调用都在内存中开辟一块独立的栈帧,保存各自的参数与未完成的工作;其二,递归的执行有“去程”与“回程”,去程不断化小,回程不断汇总。学生在任务单上手工推演fact(4)的调用栈,同桌互查,教师巡视并收集典型错误投影讲评——最常见的错误是在回程中忘记把上一层算完,即漏掉“3×”这一步。环节五:小结与作业(2分钟)学生口头完成三个填空:递归是();递归必须包含()和();汉诺塔的递推式是()。布置作业:用递归思维口述“计算1到n的和”的递推式与出口,预习阶乘程序的编写。八、第二课时教学过程环节一:复习唤醒与前测(5分钟)教师投影三个判断题:①函数调用自身一定是死循环;②递归出口可以放在递归调用之后;③任何能用循环写的问题都能用递归改写。学生举手判断并说明理由。教师借第②题强调出口必须先行判断、先行返回;借第③题自然引入本课主线——递归与迭代是互为镜像的两种解法。环节二:分层编程任务一(必做)——阶乘与求和(12分钟)TaskA:编写递归函数fact(n),计算n的阶乘,并调用测试fact(5)、fact(10)。TaskB:编写递归函数sumn(n),计算1+2+…+n。教师提供“两步法”脚手架:第一步,写出递推表达式与出口,例如sumn(n)=n+sumn(n-1),sumn(1)=1;第二步,把表达式翻译成代码,出口用if判断写在函数开头。参考答案:deffact(n):ifn==1:return1returnnfact(n1)学生独立完成,教师巡视,重点关注三类问题:出口缺失或写错条件、忘记return导致返回None、参数忘记减一导致不收敛。教师将巡视中拍下的典型错误代码匿名投影,全班“找茬”订正。环节三:分层编程任务二(提高)——斐波那契数列(10分钟)编写递归函数fib(n)返回第n项,要求先写递推式再编码:deffib(n):ifn==1orn==2:return1returnfib(n1)+fib(n2)学生运行fib(10)、fib(20)均很快返回,但运行fib(38)开始明显变慢。教师故意让学生亲身“撞上”效率墙,为下一环节的实验探究埋下真实的问题。环节四:实验探究——递归与迭代的对比(12分钟)┌──────────┬────────────────────────────────┬────────────────────┐│教学行为│具体内容│设计意图│├──────────┼────────────────────────────────┼────────────────────┤│教师演示│展示fib(5)的递归调用树,引导学生手工统计│让学生发现大量重复计算:│││各节点被计算的次数│fib(2)被算了3次,fib(3)││││被算了2次│├──────────┼────────────────────────────────┼────────────────────┤│学生活动│用time模块分别计时递归版与循环版fib(n),│用真实数据建立效率观念│││n取10、20、30、35,记录结果填表││├──────────┼────────────────────────────────┼────────────────────┤│交流讨论│问题链:慢的原因是什么?递归是不是一定差?│归纳:递归时间复杂度O(2ⁿ)│││那递归的价值在哪里?│在此逞强,循环O(n)高效;││││但递归表达简洁、贴合递推││││结构,汉诺塔等问题循环││││难以实现│└──────────┴────────────────────────────────┴────────────────────┘学生填写的对比实验结论以表格沉淀:┌──────────┬────────────────┬────────────────┬────────────────┐│比较维度│递归实现│迭代实现│适用建议│├──────────┼────────────────┼────────────────┼────────────────┤│代码简洁度│高,贴近递推定义│较繁琐│结构自相似问题优先递归│├──────────┼────────────────┼────────────────┼────────────────┤│时间效率│斐波那契情形呈指数│线性,高效│数据量大时慎用朴素递归│├──────────┼────────────────┼────────────────┼────────────────┤│内存消耗│每次调用占用栈空间,│常量空间│层数过深会栈溢出│││受栈深限制│││├──────────┼────────────────┼────────────────┼────────────────┤│可读性│强,见文知义│一般│教学与原型阶段优先递归│└──────────┴────────────────┴────────────────┴────────────────┘教师补充演示:故意编写一个无出口的递归函数,运行后Python抛出RecursionError:maximumrecursiondepthexceeded,让学生亲眼看到“栈溢出”的报错信息,强化“出口神圣不可侵犯”的编程纪律。环节五:拓展延伸(选做)——生活中的递归(4分钟)教师提出开放性问题,供学有余力的学生课后探究:①数一数书架上有多少层嵌套文件夹,写一个程序递归统计某目录下所有文件个数;②观察数学上的谢尔宾斯基三角形,思考能否用递归画出它;③二分查找能否改写为递归版本,它体现了什么思想(分治)。环节六:课堂总结与评价(2分钟)师生共同构建知识框架:递归定义——递归两要素——递归执行(调用栈)——递归设计三步(找递推、定出口、翻译代码)——递归与迭代的选择。学生完成课堂自评量表,互评小组任务完成质量。九、板书设计3.4递归法1.定义:函数调用自身2.两要素:递归表达式(化小)+递归出口(终止)3.汉诺塔:h(n)=2×h(n-1)+1,h(1)=1→h(n)=2ⁿ-14.执行:去程压栈化小,回程弹栈汇总5.设计三步:找递推→定出口→写代码6.选择:自相似用递归,大规模求效率用迭代十、作业设计基础层:编写递归程序求一个自然数的各位数字之和(如digit_sum(1234)=10),要求写出递推式。提高层:用递归实现二分查找,输入有序列表与目标值,返回其位置。探究层:查阅资料,了解“记忆化”“动态规划”如何克服斐波那契递归的重复计算问题,写一百字左右的简介,下次课分享。十一、教学评价方案┌──────────┬────────────┬────────────────────────────┬──────┐│评价维度│评价方
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 水泥混凝土制品养护工道德竞赛考核试卷含答案
- 电子绝缘与介质材料制造工创新实践测试考核试卷含答案
- 电控设备组调工岗前行业知识考核试卷含答案
- 聚氨酯装置操作工安全知识竞赛测试考核试卷含答案
- 陶瓷、玻璃文物修复师安全知识模拟考核试卷含答案
- 生活垃圾转运分拣工安全教育强化考核试卷含答案
- 2026年小学成语故事《弹冠相庆》品格辨析教学教案
- 临床医学检验技术相关专业知识章节练习(含质量控制要点)
- 临床医学检验技术专业实践能力高频考点及练习题
- 中级会计职称财务管理高频考点及习题集
- 新人教版小学语文一年级上册(全册)导学案
- 2023核电厂常规岛设备监造技术导则第9部分 阀门
- 变电设备状态监测综合平台建设方案
- 预制方桩打桩记录
- CFG桩复合地基施工方案
- 北京高盟新材料股份有限公司无溶剂型聚氨酯粘合剂生产线技术改造项目环境影响报告
- 教育科学研究的步骤与方法-课件
- 人工智能(全套课件)
- 当代西方社会思潮研究
- 语文作文格子纸600字
- 单位请假条模板(共1页)
评论
0/150
提交评论