高中信息技术选择性必修一“3.4递归法”教学设计_第1页
高中信息技术选择性必修一“3.4递归法”教学设计_第2页
高中信息技术选择性必修一“3.4递归法”教学设计_第3页
高中信息技术选择性必修一“3.4递归法”教学设计_第4页
高中信息技术选择性必修一“3.4递归法”教学设计_第5页
已阅读5页,还剩7页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

高中信息技术选择性必修一“3.4递归法”教学设计一、课标依据与教材分析《普通高中信息技术课程标准(2017年版2020年修订)》在“数据与计算”模块中明确提出,学生应能从具体问题入手,经历分析问题、抽象特征、建立结构模型、合理组织数据、通过判断分析与综合各种信息资源、运用合理算法形成问题解决流程的过程,体会用计算机解决问题的基本方法。沪科版《信息技术选择性必修1数据与数据结构》第三章第四节“递归法”,正是落实这一课标要求的核心课。递归既是算法思维的高阶形态,也是理解分治策略、回溯搜索、树的遍历等后续内容的逻辑起点。教材在本课之前已经安排了枚举法、查找算法、排序算法以及栈与队列等数据结构。学生已经具备用循环结构解决重复性计算的能力,也接触过函数的定义与调用。但递归的独特之处在于“函数调用自身”,这与学生此前形成的“程序按顺序执行、循环表达重复”的思维定势存在冲突。教材以斐波那契数列、汉诺塔问题为典型载体,从“数学中的递推”过渡到“程序中的递归”,教材编排符合由具体到抽象的认知规律,但单单依靠教材的两个示例,学生极易停留在“照猫画虎能写代码、脱离情境无从建模”的浅层水平。因此本课需要在教材基础上做两方面的教学化处理:一是补充更多可观察、可操作的情境支架,让递归的“自相似结构”可视化;二是增加对递归执行机制的剖析,借助调用栈图示消解“函数自己调用自己是否矛盾”的迷思。二、学情分析授课对象为高二年级选修数据与数据结构方向的学生。知识层面,学生已掌握Python基本语法、函数定义与参数传递、循环结构、列表等基础知识,能在教师引导下编写20行以内的程序。思维层面,学生的抽象逻辑思维正在由经验型向理论型过渡,对具象情境敏感,对纯符号推理仍感吃力。学习预测上,本课存在三处典型障碍。其一,认知冲突:学生初见“函数体内调用自身”时,普遍第一反应是“这不会死循环吗”,这一疑问若不及时正面回应,会形成对递归的排斥心理。其二,建模困难:面对诸如汉诺塔这类新问题,学生能看懂递归解法,却无法独立完成“大问题拆成小问题”的抽象,即递归定义的归纳步骤。其三,边界意识薄弱:学生编写递归函数时常遗漏或错写基例条件,导致栈溢出报错,却又难以定位错误根源。基于以上分析,本课的教学策略定为:以真实可感的生活情境引入递归现象,以动画与手工模拟揭露递归执行过程,以填空式半开放任务降低初次建模难度,再以完整问题迁移推动能力内化。三、教学目标1.信息意识:能够识别生活中和数学问题中具有自相似结构的对象,如镜中镜、套娃、树状家谱、阶乘、斐波那契数列等,并能用“大问题分解为同结构的子问题”这一视角描述其特征。2.计算思维:理解递归的两个必要条件——递归基例与递归关系;能对具体问题进行递归建模,归纳出递推表达式;能借助调用栈图示解释递归程序的执行与回溯过程;能比较递归与循环两种思路在表达简洁性与资源开销上的差异,依据问题特征选择合适的算法策略。3.数字化学习与创新:在编程实践中独立完成阶乘、斐波那契数列的递归实现,并在教师支持下完成汉诺塔移动步骤的输出;能借助增加计数变量、绘制递归树等方法对程序行为进行观察与调试,形成“让不可见的过程可见”的探究习惯。4.信息社会责任:在协作完成任务的过程中倾听同伴的建模思路,能对他人方案提出具体、可操作的改进建议;认识到算法效率对计算资源的实际影响,形成节约计算资源的工程意识。四、教学重点与难点教学重点:递归的两个必要条件(基例与递归关系);用递归思想分析并解决阶乘、斐波那契数列、汉诺塔等典型问题。教学难点:递归调用执行的机理,即“递”的层层深入与“归”的层层返回;面对新问题时递归建模的归纳过程,尤其是汉诺塔问题中“把n1个盘子看作一个整体”的抽象飞跃。五、教学方法与教学准备教学方法采用情境教学法、支架式教学法、任务驱动法与协作探究法相结合。情境负责激趣与意向锚定,支架负责化解初次建模的难度,任务负责保持学生的高参与度,协作负责让学生在表达与质疑中完成认知重构。教学准备包括:多媒体课件(含镜中镜图片、套娃拆解示意图、汉诺塔动画)、在线Python编辑环境或机房集成开发环境、纸质学习单(含任务清单、代码填空框、调用栈填图区)、三组汉诺塔实体教具(可用三种尺寸的圆环与立柱代替)、计时器。六、教学过程(一)情境导入:从“镜中藏着多少面镜子”说起(约8分钟)课堂伊始,教师在黑板上贴出两张照片:一张是两面相对的立镜形成的无穷嵌套影像,一张是整齐套放的俄罗斯套娃被逐层打开的照片。教师提问:“这两幅画面有什么共同的特点?”学生基于直观经验一般能回答出“里面套着里面”“大中有小”之类的表达。教师顺势追问:“如果我想知道套娃一共有多少个,最小的那个只有一颗豆子大,看不清楚内部,你打算怎么办?”学生可能提出“一层一层拆开数”“从外往里一层层拨开”等策略。教师引导提炼:“每个套娃的形状相同,大小不同;拆掉最外面一层后,里面的问题与原问题一模一样,只是变小了。”接着教师展示一段只有四行的程序片段:函数jiejing中print输出一句提示后,在函数体内再次调用函数名jiejing()。教师并不立即运行,而是请学生预测运行结果。多数学生会预测“只执行一次”或“无限输出”。教师运行程序,屏幕上滚动的输出最终被红色报错信息终止:RecursionError:maximumrecursiondepthexceeded。教室中通常会出现轻微的骚动,教师顺势板书核心问题:“函数为什么可以调用自己?为什么它会停不下来?怎样让它既调用自己、又能在恰当的时刻停下来?”设计意图:用学生熟悉的生活影像建立“自相似”的初步直觉,再用一段刻意制造错误的程序制造认知冲突,把学生的注意力聚焦到递归的两个要害——“自我调用”与“终止条件”。此时不急于给出术语,让问题先住进学生心里。(二)新知建构:递归的概念与两要素(约10分钟)教师给出阶乘的数学定义:5!=5×4×3×2×1,并提问:“这个定义里,我们能发现什么重复?”学生观察后能指出“每次只是把乘数减一再乘进去”。教师进一步给出递归式视角下的定义:当n=1时,n!=1;当n>1时,n!=n×(n-1)!。教师着重强调:这个定义的形式特点是用n-1的阶乘来定义n的阶乘,是“用自己的小一号版本来定义自己”。师生共同把数学定义转写为Python函数。教师逐行板书并解释:defjiecheng(n):ifn==1:return1else:returnnjiecheng(n1)教师提问:“哪一行防止程序掉进深渊?哪一行让问题越变越小?”学生能定位到if分支即基例,return处的调用即递归关系。教师进行概念命名:像这种在其定义中直接或间接调用自身的函数称为递归函数;递归必须同时满足两个条件——其一,存在递归基例,即不再调用自身、直接给出答案的边界情形;其二,存在递归关系,即每次调用都使问题的规模向着基例方向缩小。缺少基例,程序会像刚才的演示一样陷入栈溢出;缺少规模缩小,递归无法向基例收敛。教师再次运行之前出错的代码,并现场修改,在函数体内加入计数判断,使其输出五次后返回。学生亲眼看到“加上基例就正常”,此前“函数还能不能自己调用自己”的疑虑初步消解。设计意图:把数学定义直接迁移为代码,是本课的第一个关键转折。数学中n!=n×(n-1)!的递归形式学生并不陌生,只是从未意识到这就是递归。借助已有知识作为认知锚点,能显著降低新概念的陌生感;两要素的明确命名则为后续的编程与调试提供了可操作的对照清单。(三)机制剖析:递归到底是怎么执行的(约10分钟)学生写得出代码,未必理解执行过程。教师在此安排一个“纸上追踪”活动。每位学生在学习单上计算jiecheng(4)的执行过程,教师同步在黑板上以竖向列表的形式画出调用栈:jiecheng(4)等待jiecheng(3)的结果jiecheng(3)等待jiecheng(2)的结果jiecheng(2)等待jiecheng(1)的结果jiecheng(1)返回1教师讲解:程序每调用一次自身,系统的调用栈中就会压入一帧,记录当前函数的参数、局部变量和返回地址;当基例到达后,栈顶帧弹出,结果逐层向上传递:jiecheng(2)得到1×2=2,jiecheng(3)得到3×2=6,jiecheng(4)得到4×6=24。教师用形象的比方收束:“整个过程像把一把折叠刀一层层翻开到尽头,再从最里层依次折回原位——‘递’是深入,‘归’是返回。”学生活动:学生在自己的纸上为jiecheng(5)重复一遍栈的压入与弹出过程,同桌互相检查返回值在每一层的计算是否正确。教师巡视,重点关注两类错误:一是学生把n-1误写为n,导致参数不缩小;二是学生在回溯时将返回值当成新参数再次代入,暴露了“调用”与“代值”概念混淆。教师进行小结性追问:“同样是算阶乘,循环也能做,递归和循环的差别在哪里?”学生基于方才的经验一般能说出一两点。教师列表归纳:循环用一个变量反复更新状态,代码中重复的是同一段语句;递归则把答案的拼装延时到调用返回之后,代码中重复的是同一个问题的不同规模。并补充工程视角:递归每深入一层就多占一帧栈空间,过深时会触发栈溢出,所以递归并非银弹,选择算法要看问题特征。设计意图:调用栈是递归理解的“暗物质”,教材中一笔带过,学生却往往困在这里。纸笔追踪活动把不可见的内存过程变成可以涂写的图示,尊循“让过程可见”的教学原则;递归与循环的对比则防止学生形成“递归高级、循环低级”的错误价值判断,为后一节的算法效率分析埋下伏笔。(四)半开放任务:斐波那契数列的递归实现(约8分钟)教师呈现一个经典问题情境:一对兔子出生后第三个月起每月生一对小兔,小兔同样遵循此规律,问第n个月的兔子总数。教师简要分析并给出序列:1、1、2、3、5、8、13……学生观察出每一项是前两项之和后,教师将其抽象为递归定义:当n=1或n=2时,F(n)=1;当n>2时,F(n)=F(n-1)+F(n-2)。学生根据学习单中的填空式代码模板独立完成实现。模板中故意留出两处空白:基例的判断条件与递归调用的返回表达式。学生完成填空并运行验证,教师请一位完成较快的学生板演并说明每一处的依据。随后教师布置拓展观察:在函数体内计数统计调用总次数,分别计算F(10)、F(30)、F(35)并记录用时。学生运行后惊讶地发现F(35)明显卡顿。教师引导思考:“为什么参数只多了5,耗时却暴涨?”请学生尝试画出F(5)的递归调用树,发现F(3)、F(2)等被重复计算多次。教师总结:朴素递归存在大量重叠子问题,这是递归法的代价;改善的方法之一是记忆化缓存,即将已算过的结果存入字典,这为后续动态规划的学习埋下接口,本课只作初步认识,不作强制要求。设计意图:本任务承上启下。一方面让学生在修改有支撑的半开放代码中获得独立完成递归编程的成功体验;另一方面,通过耗时体验与调用树绘制,让学生意识到算法的差异会真实地转化为等待时间,将效率观念从口号变成感受。(五)合作探究:汉诺塔的递归求解(约14分钟)教师出示汉诺塔教具并讲述问题:三根柱A、B、C,A柱上按从大到小叠放n个圆盘,要求将整摞圆盘借助B柱移动到C柱,规则是一次只能移动一个盘,大盘不能压小盘。第一轮探究:三人一组,先尝试2盘、3盘的实体操作,并要求记录每一步“从哪根柱移到哪根柱”。多数组能顺利给出3盘的七步移动。第二轮探究:教师提问“4盘、n盘怎么办?用脑子几乎想不过来。试试换一种想法——别盯着每一步,先想整体策略。”教师给出关键提示:“如果我能把上面n-1个盘子整体当作一块‘大板’,问题会简单得多:第一步,把这块‘大板’从A搬到B;第二步,把最底下的大盘从A搬到C;第三步,再把‘大板’从B搬到C。而搬动‘大板’这件事本身,就是一个比原来小一号的汉诺塔问题。”学生在小组内讨论后向全班陈述思路,教师板书递归定义:hanoi(n,A,B,C)表示将n个盘从A经B移到C。若n=1,直接从A移到C;否则依次执行hanoi(n-1,A,C,B)、输出“将第n号盘从A移到C”、hanoi(n-1,B,A,C)。教师特别强调参数角色的变化:同一个函数,不同的调用中“起点柱、辅助柱、目标柱”的位置在轮换,这是汉诺塔递归最精妙也最容易出错的地方。第三轮探究:学生根据定义用Python实现函数并输出4盘的全部移动步骤,与之前手工实验得到的3盘七步作对比验证:3盘的解应当恰好出现在4盘的解的前七步与后七步中,中间一步是最大盘的移动。这一验证若吻合,学生会对递归的正确性产生强烈的信服感。教师进一步提问:“n盘总共需要多少步?”学生观察1、3、7、15步的规律,归纳出步数=2ⁿ-1,并估算64盘即使每秒移动一步也需要约五千八百多亿年,由此体会指数级增长的惊人速度。设计意图:汉诺塔是递归建模的经典难例,本课用三轮递进——动手操作获得步骤直觉、整体视角完成递归抽象、编码输出并与手工验证互相印证——把“想做却想不出”转化为“有据可依地建构”。2ⁿ-1的归纳则将程序输出与数学规律勾连,呼应学科核心素养中的计算思维与逻辑推理。(六)课堂小结与分层作业(约5分钟)教师请学生用自己的话完成三句话:“递归是……;递归必须满足……;我今天最大的困惑是……。”教师选取两三位学生的表述点评并板书课堂脉络:自相似结构→递归两要素→调用栈执行机制→效率与改进方向。分层作业:基础层,阅读教材相关章节并完成斐波那契数列递归与循环两个版本的代码互译,写一段50字左右的对比说明;提高层,用递归实现文件夹目录树的遍历模拟(可用列表嵌套表示目录结构),要求输出缩进对应当前层级;挑战层,在斐波那契递归中加入字典缓存以记忆已计算的结果,测出F(40)的提速倍数并提交简短实验报告。七、板书设计主板书采取三段式结构。左侧写概念:递归——函数在定义中

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论