高中一年级信息技术递归法及其应用教学设计_第1页
高中一年级信息技术递归法及其应用教学设计_第2页
高中一年级信息技术递归法及其应用教学设计_第3页
高中一年级信息技术递归法及其应用教学设计_第4页
高中一年级信息技术递归法及其应用教学设计_第5页
已阅读5页,还剩6页未读 继续免费阅读

下载本文档

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

文档简介

高中一年级信息技术递归法及其应用教学设计一、课标对接与设计理念本课对应高中信息技术选择性必修模块中算法与数据结构部分的核心内容。课程标准要求学生理解常见算法的基本思想,能用程序设计语言实现简单算法,并在解决问题的过程中发展计算思维。递归作为算法设计中极具思想性的一种方法,既是分治思想的自然延伸,也是后续学习树、图等数据结构的必要铺垫。本课设计遵循三个基本立场。第一,概念建构先于代码书写。递归的难点不在语法,而在学生能否建立"问题可以分解为同构的小问题"这一思维模型,因此课堂前半段以生活情境和实物演示为主,不急于打开编程环境。第二,让思维过程可视化。递归调用发生在内存的栈空间中,学生看不见摸不着,教师必须通过调用栈图示、动画演示和学生角色扮演,把隐蔽的执行过程外显化。第三,以问题驱动代替结论灌输。整节课由"汉诺塔最少移动多少次"这一主问题牵引,学生在求解过程中自然遭遇"化大为小"的需求,递归思想成为解决问题的必然产物,而非教师强加的知识点。二、教材分析本节内容位于《数据与数据结构》第四章算法与数据结构的第三节,前两节分别讨论了算法的描述与基本控制结构、常用数据结构入门。递归法承上启下:向上承接前几章学习的分支结构与循环结构,让学生认识到与"重复执行"不同的另一种问题求解范式;向下为后续树结构遍历、二分查找的深入讨论提供方法基础。教材呈现顺序为先讲递归定义,再讲递归调用过程,最后给出应用实例。这一顺序从知识逻辑看是严密的,但从学生认知规律看容易造成"定义先行、理解滞后"的问题。教学中对教材顺序做了调整:先从递归现象(如两面镜子相对、德罗斯特效应图片)感受"自我引用",再从阶乘问题归纳递归的两个要素,最后才给出形式化定义。教材中汉诺塔的经典案例予以保留并作为贯穿性情境,但将其前置为全课的驱动问题。三、学情分析授课对象为高中一年级学生。知识储备方面,学生已掌握Python的基本语法,能够熟练使用if语句和for、while循环解决累加、枚举类问题,多数学生写过求n的阶乘的循环程序,这为对比教学提供了素材。能力基础方面,学生具备初步的问题分解意识,但习惯把"大问题不变形地缩小"这种操作理解为"循环再做一遍",难以理解"函数调用自己"的合法性与必要性。预判三类典型困难。第一,"函数调用自己会不会死循环",反映学生对终止条件缺乏直觉。第二,"程序到底在执行哪一层",反映学生对调用栈的运行机制没有表象,容易把多层调用混为一谈。第三,读得懂递归代码但写不出递归代码,模仿能力强而建模能力弱,不能从新问题中抽象出"递推关系"和"终止条件"两个要件。教学设计围绕这三类困难布设支架:用角色扮演化解第一、二类困难,用"填空式"半开放任务化解第三类困难。四、教学目标信息意识维度:学生能识别现实中和数学中的递归现象,意识到"用自身定义自身"是一种合法的、有价值的表达方式。计算思维维度:学生能从具体问题中抽象出递归模型,明确递推关系与终止条件两个要素;能用调用栈图示追踪递归程序的执行过程;能识别何时适合使用递归、何时循环更为经济,形成初步的算法选择意识。数字化学习与创新维度:学生能用Python编写并调试简单的递归函数,能借助添加输出语句、可视化工具等手段观察递归执行过程,体验"通过实验理解程序行为"的探究方式。信息社会责任维度:通过汉诺塔问题中"宇宙末日"的估算环节,体会算法效率的客观规律,建立对计算复杂性的初步敬畏与理性认知。五、教学重点与难点教学重点:递归的两个核心要素(递推关系与终止条件)及其程序实现;用调用栈模型理解递归的执行过程。教学难点:递推关系的抽象建立,即从具体问题归纳出f(n)与f(n1)之间的同构关系;多层嵌套调用与逐层返回的执行顺序。六、教法与学法教法采用情境驱动法、实物演示法与对比教学法相结合。执教者的经验是,递归这一课宁可花一半时间"不讲代码",也要让学生在头脑中先长出递归的结构。学法上以自主探究、小组协作、实验观察为主:学生先尝试、先出错、先困惑,再在与教师和同伴的对话中完成意义建构。七、教学准备机房环境:每人一台安装Python3环境的计算机,安装递归可视化工具或利用在线可视化平台。教具:三层圆盘汉诺塔实物模型一套,大小不同的收纳盒一盒(用于演示"盒中盒"),两面小镜子。学习单:包含阶乘问题任务单、调用栈追踪记录表、汉诺塔探究记录表,课前发放。学生分组:按异质四人一组,组内明确记录员、操作员、汇报员角色。八、教学过程(一)情境导入:看见"自己描述自己"(约6分钟)上课伊始,教师投影一张经典的"德罗斯特效应"图片——一盒可可粉的包装上印着一位女士,女士手中又捧着同一盒可可粉,盒中又是同一位女士。教师不解释,只提问:这张图有什么特别之处?学生很快发现"图片里包含着它自己"。接着教师打开两面小镜子相对放置,邀请一名学生观察镜中无穷嵌套的影像并描述感受。随后教师抛出一句话:"从前有座山,山里有座庙,庙里有个老和尚在讲故事,讲的是:从前有座山……"教室里出现会心的笑声。教师追问:这个故事为什么讲不完?学生能答出"故事里有故事自己"。教师顺势点题:这种"事物以自身来定义自身"的现象,今天要在程序里让它合法地发生,并且让它停下来、算出结果——这就是递归。设计意图:从视觉惊奇和语言游戏切入,先让学生建立"自我引用是存在的、可观察的"这一感性认识,为后面接受"函数调用自己不矛盾"扫除心理障碍。全程不提及任何语法,保证概念先行。(二)问题建构:从循环版阶乘到递归版阶乘(约12分钟)教师布置任务一:计算n的阶乘,用已学的循环结构实现。这是复习性任务,大部分学生在三分钟内完成,代码形如result=1之后foriinrange(1,n+1)循环连乘。教师请一名学生在黑板写出代码并口述思路。接着教师改变提问方向:抛开循环,只用自然语言说说"5的阶乘是什么"。有学生回答"5乘4乘3乘2乘1"。教师继续追问:换一种说法,"5的阶乘和4的阶乘有什么关系"?经过片刻沉默,有学生试探着说出"5的阶乘等于5乘以4的阶乘"。教师立即板书这一关键等式,并顺势带领全班写出递推关系:n的阶乘等于n乘以(n1)的阶乘。为避免公式以纯代码字符呈现,教师用板书大字呈现:f(n)=n×f(n−1)。教师再抛出致命一问:那按照这个定义,f(1)又等于什么?f(0)呢?学生发现按递推式会一直"追"下去,必须有一个地方停下来,于是"0的阶乘规定为1"这条数学约定有了真实的功能——它就是递归的"刹车"。教师正式归纳递归二要素:一是递推关系,大问题分解为同构的小问题;二是终止条件,分解到最简情形直接给出答案。随后师生共同把这段自然语言"翻译"成Python函数:定义函数fact(n),若n等于0则返回1,否则返回n乘以fact(n−1)。教师要求学生暂不运行,而是用学习单上的调用栈追踪表,手工推演fact(4)的执行过程:fact(4)等待fact(3)的结果,fact(3)等待fact(2),fact(2)等待fact(1),fact(1)等待fact(0),fact(0)直接返回1,然后像多米诺骨牌一样逐层回返,最终得到24。学生在表中逐层填写"调用什么、等待什么、返回什么"。再运行程序验证,与手推结果比对。当屏幕输出24且与手推一致时,教室内往往出现明显的"原来如此"的反应。教师强调:计算机为每一次函数调用在内存栈中开辟一块独立区域,各自的参数n互不相同,这正是"四层fact同时活着却互不干扰"的原因。设计意图:以旧知(循环)为脚手架,以数学关系为桥梁,让学生在"发现等式"而非"接受定义"的过程中建构递归概念;调用栈手工推演先于程序运行,把隐性的内存过程转化为可书写的显性过程,直击学情中的第二、三类困难。(三)实验探究:递归会不会"疯掉"(约8分钟)教师发布任务二:把fact函数中的终止条件注释掉,运行fact(5),观察现象,小组讨论发生了什么,并记录在探究表中。学生运行后看到Python抛出递归深度超限的错误提示。教师引导学生阅读错误信息中的"maximumrecursiondepthexceeded",并提问:这个保护机制说明了什么?学生认识到每一次调用都占用栈空间,无终止的调用必然耗尽栈资源。随后教师布置一个更受触动的实验:保持终止条件,调用fact(1),结果同样崩溃。教师追问:有了终止条件为什么还崩?学生发现1永远无法等于0,递推的方向根本到不了"刹车"。由此归纳出第三条隐含要求:递推的方向必须朝着终止条件收敛。设计意图:用两个故意的"破坏性实验"让学生亲历失控,比十次口头强调"别忘了终止条件"更有效。错误信息本身成为教学资源,培养学生阅读报错的调试素养,这是计算思维中"基于证据诊断程序"的具体落点。(四)核心任务:破解汉诺塔(约14分钟)教师取出三层圆盘汉诺塔实物,介绍规则与传说:相传古印度神庙的僧侣们要将64个金盘从一根柱子移到另一根,每次只能移动一个盘,大盘不能压在小盘上,当全部完成之日世界便会终结。主问题抛出:n个盘子最少需要移动多少次?第一步,从n=1、n=2、n=3做起。请小组用实物或纸盘模拟,记录最少移动次数,得到1、3、7。教师要求小组观察n=3的解决过程能否"借用n=2的办法"。这是本课思维的制高点,教师给出关键提示:把上面两个盘子看作一个整体。经过讨论,学生逐步拼出三段式策略:先把上面n−1个盘子借助目标柱移到辅助柱,再把最大的盘子直接移到目标柱,最后把n−1个盘子从辅助柱移到目标柱。妙处在于:第一步和第三步本身就是更小规模的汉诺塔问题。递推关系水到渠成:h(n)等于2倍的h(n−1)再加1,终止条件为h(1)等于1,板书呈现为:h(n)=2h(n−1)+1,且h(1)=1。第二步,将策略编码。学生按二要素模板编写hanoi(n,源柱,辅助柱,目标柱)函数:当n等于1时直接输出移动一步;否则递归调用hanoi(n−1)处理上半部分,输出移动最大盘,再递归调用hanoi(n−1)收尾。教师巡视,重点关注两类错误:三根柱子在递归调用时参数顺序写错,以及忘记单列n等于1的情形。普遍性问题拿到全班投影共诊。第三步,感受爆炸性增长。学生用程序计算"移动次数":h(10)为1023,h(20)超过一百万,h(64)约为1.8×10的19次方。教师补充估算:即使每秒能移动一个盘,也需要约5800亿年,远超宇宙年龄。学生直观体会到:递归给出了解法的"优雅",但无法消除问题本身的"代价"——这埋下了后续讨论算法效率与复杂度的种子。设计意图:汉诺塔兼具趣味性与结构性,其解法不可能靠循环直觉自然想到,只能靠"化大为小"的递归策略,因而成为递归思想最不可替代的载体。实物操作降低抽象门槛,次数估算则把本课从"学会一个技巧"提升为"理解一类规律"。(五)对比升华:递归还是循环(约3分钟)教师组织快问快答:阶乘问题用循环简单还是递归简单?学生普遍回答循环简单。教师追问:那递归存在的价值是什么?学生结合汉诺塔的体验归纳:有些问题本身具有天然的递归结构(树形、嵌套、分治),用循环描述别扭甚至几乎无从下手;递归的优势在于思维表达的自然和代码的简洁,代价是额外的栈开销与调用成本。教师小结并预告:今后学习树结构遍历时,还会再次与递归相遇。(六)课堂小结与作业课堂小结交给学生完成。每组用一句话概括"递归成立必须满足什么",汇总即得二要素加收敛性。教师补充完整知识结构:现象→定义→二要素→调用栈机制→应用→递归与循环的取舍。分层作业:基础层,用递归求斐波那契数列第n项,画出f(5)的递归调用树,数一数重复计算了多少次;提高层,用递归实现二分查找思想,查找有序序列中的目标值;拓展层(选做),观察斐波那契递归版在n较大时变慢的现象,思考原因并尝试用"记住已算结果"的方法改进,为今后记忆化搜索与动态规划的学习留一个钩子。九、教学评价设计本课采用过程性评价与表现性评价结合的方式。过程性评价依托三张学习单:递推关系归纳是否准确、调用栈追踪是否与程序运行一致、汉诺塔三段式策略的表述是否完整。表现性评价关注汉诺塔编码环节的成品质量与小组展示中的解释力。评价量规设三个维度:概念理解(能否说清二要素)、程序实现(代码正确且能运行)、迁移表达(能否用自己的话解释"为什么递归不是死循环")。每维度分"达成—基本达成—待达成"三级,课后由教师与学习单批注结合评定,结果反馈给学生作为后续改进依据。十、板书设计主板书居中呈现本课主干:左列为授课线索"现象→定义→程序→应用",中为两个递推关系式(阶乘与汉诺塔),右列为递归二要素"递推关系+终止条件"及调用栈四层示意。副板书保留学生生成的快问快答结论,体现生

温馨提示

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

评论

0/150

提交评论