版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
高中二年级信息技术选考班:基于二分与阶乘实例的迭代和递归代码案例教学设计一、教材定位与学情研判本课选自浙教版(2019)高中信息技术选择性必修1《数据与数据结构》第五章第二节"迭代和递归"。教材在系统讲解了数组、链表、栈、队列、树等基本数据结构之后,安排这一节内容,意图十分明显:迭代与递归是程序设计中最基础、最普遍的两类重复执行控制思想,它们既是对前面循环结构、自定义函数知识的综合运用,又是后续学习排序算法、查找算法、树遍历的先决条件。可以说,这一节是从"会写程序"走向"会设计算法"的枢纽节点。授课对象为高中二年级选考信息技术的学生。经过必修模块的学习,学生已经能够熟练使用for循环与while循环,能够定义和调用自定义函数,对累加求和、累乘求积等经典迭代问题有初步认识。但学生的困难也很典型:一是把"迭代"简单等同于"循环",说不出迭代思想中"用旧值推出新值"的状态演进本质;二是对递归存在畏难情绪,"函数调用自己"违反初学者的直觉,学生常常纠结于"函数还没定义完怎么就能调用自己"这一认知冲突;三是无法辨析两类方法在时空开销上的差异,面对具体问题时缺乏选择依据;四是容易遗漏递归终止条件,写出无限递归程序后只会强行终止运行,调试能力薄弱。基于上述判断,本课的教学重心不是罗列语法,而是借助二分查找、阶乘计算、斐波那契数列、汉诺塔四个递进案例,让学生在"读代码—改代码—写代码—比代码"的完整链条中建立对迭代与递归的结构化认识,并渗透计算思维中问题分解、抽象建模、状态追踪的核心方法。二、教学目标1.信息意识层面:学生能够认识到"重复"是计算机解题的基本策略,面对具有重复结构的问题,能主动联想到迭代或递归两种求解路径,形成用自动化方式处理大规模重复任务的意识。2.计算思维层面:学生理解迭代的本质是"状态变量的周而复始的更新",能准确找出迭代问题中的迭代变量、迭代关系式和迭代终止条件;理解递归的本质是"把大问题分解为结构相同的子问题",能归纳出递归的两个必要条件——边界条件(递归出口)与递归模式(递推关系);能用栈的模型解释递归调用的执行过程,理解先进后出的调用与返回次序。3.数字化学习与创新层面:学生能够针对同一问题分别写出迭代实现与递归实现,并通过手工添加计数变量、打印追踪信息等方法比较两种实现的执行次数与时间开销,形成基于证据的算法比较习惯。4.信息社会责任层面:通过大熊猫种群数量估算、对折纸张厚度等有关迭代增长的情境,体会指数增长的威力,理解数学建模在人口、资源、环境议题中的作用。三、教学重点与难点教学重点:迭代三要素(迭代变量、迭代关系式、终止条件)的提炼;递归两要素(边界条件、递推关系)的归纳;用调用栈解释递归执行过程。教学难点:递归执行过程的追踪与理解;迭代与递归的适用场景判断;避免无限递归与重复计算的策略意识。难点的突破策略:用"递去—归来"的动画演示配合打印语句输出函数调用深度,让学生亲眼看到栈的生长与收缩;用数学归纳法的逻辑类比递归的正确性论证,把直觉困难转化为逻辑可信。四、教学方法与课前准备教学方法采用案例驱动、任务驱动与对比探究相结合。四个案例构成一条认知螺旋:二分查找(迭代强化)—阶乘(递归初识)—斐波那契(递归反思)—汉诺塔(递归升华)。每个案例遵循"问题情境—手工推演—代码实现—追踪验证—对比讨论"的五步流程。课前准备:机房安装Python3.x环境并配置IDLE与Thonny(Thonny的单步调试视窗能直观显示函数调用栈,是突破难点的关键工具);教师准备四层汉诺塔实物模型或联动动画;学案上预先印好待填空的代码框架;黑板一侧预画调用栈示意图的位置。五、教学过程(一)情境导入:一张纸的对折课始,教师出示一张A4纸,现场对折,提出问题:假设这张纸厚度约0.1毫米,对折30次,厚度大约是多少?学生凭直觉猜测,多数答案停留在几厘米到几米之间。教师不急于揭晓,而是引导学生写出这个变化过程的表达式:每对折一次,厚度变为原来的2倍,即h=0.0001×2的30次方米。接着师生口算换算:2的10次方约为1000,2的30次方约为10亿,厚度约10万米,超过珠穆朗玛峰的高度。教室里出现惊讶的声音时,教师顺势点题:这个感叹背后是一个朴素而强大的思想——每一步都从上一步的结果出发再推进一步,这就是迭代。今天我们要研究的,还有迭代的一位"孪生兄弟":它不从前往后推,而是把问题不断拆小,直到小到一眼有答案,再倒着拼回来,这就是递归。设计意图:指数增长的反直觉现象能快速激活注意,同时"h由h上一步推出"天然就是迭代关系式的雏形,为后续抽象出迭代三要素埋下伏笔。(二)案例一:二分查找——迭代思想的规范化提炼教师给出情境:在1到100之间你心里想好一个数,我来猜,每次猜完你只回答"大了"或"小了",我最少几次能保证猜中?请两名学生上台配合演示,教师用折半策略猜数,7次以内命中。演示结束后,学生在学案上用自然语言描述刚才的策略,教师引导其精确化:设查找区间下界为low,上界为high,每次取中间位置mid=(low+high)//2;若目标值小于中间元素,则新区间为low到mid−1;若大于,则新区间为mid+1到high;直到low大于high或命中为止。随后学生补全学案上的代码框架,核心代码如下:defbinary_search(a,key):low,high=0,len(a)1whilelow<=high:mid=(low+high)//2ifa[mid]==key:returnmidelifa[mid]<key:low=mid+1else:high=mid1return1代码运行验证后,教师组织关键的抽象环节:请学生对照这段代码回答三个问题。哪几个变量在循环中反复更新?更新的依据是什么表达式?什么时候停止更新?学生依次答出low、high、mid是迭代变量,更新依据是折半规则,终止条件是区间为空。教师板书并给出提炼:任何一个迭代结构都能拆成迭代变量、迭代关系式、迭代终止条件三要素。回看对折纸张的例子,迭代变量是厚度h,关系式是h←2h,终止条件是折够30次。再找累加求和的例子验证一次,三要素框架两次印证无误。教师进一步追问:二分查找中区间长度如何从n缩到1?大约循环多少次?学生推算出每次减半,循环次数约为log₂n,这也是前面猜数游戏7次命中的理论依据。迭代效率的量化意识在此自然落地。设计意图:二分查找是学生相对熟悉的算法,用它作为抽象迭代三要素的载体,认知阻力小;猜数游戏保证全员亲历折半过程,代码补全而非默写,把精力留给思想提炼。(三)案例二:阶乘——递归的初次亮相教师从数学定义切入。板书阶乘的定义:n!=n×(n−1)×(n−2)×……×2×1。学生很快就能用for循环写出迭代实现:deffact_iter(n):s=1foriinrange(1,n+1):s=sireturns教师请学生用迭代三要素解释这段代码,巩固上一环节的成果。随后教师换一种眼光看这个定义:n!=n×(n−1)!,也就是说,n的阶乘问题里"藏着一个一模一样的更小的问题"。最小的情况是什么?1的阶乘等于1,这是不需要再拆的情况。教师据此给出递归的两个必要条件并用红板书出:边界条件——问题小到能直接回答;递推关系——大问题与同结构小问题的换算关系。紧接着师生共同完成递归版本:deffact_rec(n):ifn==1:return1else:returnnfact_rec(n1)这是学生第一次见到函数体内出现对自己的调用,认知冲突在此刻达到峰值。教师不急于解释,而是让学生在Thonny中以单步方式运行fact_rec(4),观察右侧调用栈窗口:fact_rec(4)等待fact_rec(3),fact_rec(3)等待fact_rec(2),fact_rec(2)等待fact_rec(1),fact_rec(1)返回1,然后逐层返回2、6、24。教师用"递去"与"归来"两个词概括这个过程:递去是把问题一层层往下压,压到边界;归来是把答案一层层往回组装。每一次调用都占用栈上的一帧空间,栈先长高后变矮,这正是递归借助的数据结构——栈,与本模块前面章节的知识形成呼应。教师现场演示两个事故:把边界条件删掉后运行,程序报告超过最大递归深度;把n−1误写成n,同样陷入无限递归。学生由此总结:递归程序的正确性必须双保险——边界可达,且每次调用都在向边界靠近。设计意图:阶乘结构简单、定义自带递推形式,是递归启蒙的最优载体。实物化的调用栈观察把抽象的"自己调用自己"变成可视的"压栈与弹栈",两个故意的错误则把安全规范深植于第一印象之中。(四)案例三:斐波那契数列——递归的漂亮与代价教师出示兔子繁殖的经典情境,引导学生列出数列1,1,2,3,5,8,……并写出递推定义:当n等于1或2时,f(n)=1;当n大于2时,f(n)=f(n−1)+f(n−2)。学生很快写出递归版本:deffib_rec(n):ifn==1orn==2:return1returnfib_rec(n1)+fib_rec(n2)课堂第一次试运行fib_rec(10),瞬间出结果,学生觉得递归优雅极了。教师不动声色地把参数改为35,运行——明显的卡顿出现。教室安静下来,疑问自然产生:这么短的代码为什么慢?学生在学案上画出fib_rec(5)的递归调用树:fib(5)分解为fib(4)与fib(3),fib(4)又分解为fib(3)与fib(2)……画到一半学生自己发现:fib(3)被反复计算,fib(2)更是出现多次。教师请学生在代码中加入一个全局计数变量,统计调用fib_rec(40)的调用总次数,输出是一个超过2亿次的天文数字;而改用迭代版本:deffib_iter(n):a,b=1,1foriinrange(3,n+1):a,b=b,a+breturnb同样的输入,循环只执行n−2次,瞬间完成。强烈的数据反差促使学生得出结论:递归代码简洁、贴合数学定义,但可能存在大量重复子问题;迭代代码朴素,却往往更高效。教师补充一句方法论的提醒:解决重复计算的出路是记忆化或动态规划,那是后续学习的方向,今天先建立"有代价"的意识。设计意图:先让学生享受递归的美,再亲手撞上证递归的墙,最后用量化的调用次数解释墙的来源,完整经历"美感—困惑—证据—结论"的科学探究过程。两种实现对同一个问题并置,为下一环节的对比总结提供最鲜活的素材。(五)案例四:汉诺塔——递归思维的登高教师拿出三层汉诺塔模型,请学生尝试把三片圆盘从A柱借助B柱移到C柱,规则是大盘不能压小盘。学生操作成功后,教师加大难度:64片需要多少步?人力显然不可行,问题交给递归。教师引导学生完成关键的思维飞跃:要把最底下那片最大的盘子从A移到C,前提是上面的n−1片已经整体挪到B;最大盘就位后,再把B上的n−1片整体挪到C。至于"n−1片怎么挪",那恰是原问题缩小一号的翻版。师生共同归纳递推关系与伪代码,再落实为:defhanoi(n,a,b,c):ifn==1:print(a,">",c)else:hanoi(n1,a,c,b)print(a,">",c)hanoi(n1,b,a,c)学生运行hanoi(3)与hanoi(4),对照实物验证每一步的正确性,并通过计数发现移动步数为2的n次方减1:3片7步,4片15步。教师点出64片需要约1.8×10的19次方步,呼应开头的指数震撼,首尾闭环。组织讨论:汉诺塔为什么几乎不适合用迭代直接写?学生体会到:有些问题的结构天然是递归的——子问题与原问题同构、解决方案层层嵌套,此时递归表达简洁自然,强行迭代反而要用栈手工模拟,代码晦涩。这与斐波那契案例形成互补:递归不是炫技,而是当问题的递归结构足够清晰时最忠实的表达。设计意图:汉诺塔是递归思想的"试金石",它把"信任子问题会被正确解决"这一递归信念推到前台。实物操作、代码输出、步数公式三方互证,既验证程序正确性,也渗透算法复杂度的量级观念。(六)对比梳理与课堂小结教师组织学生完成一张对比表,从思考方向、程序结构、空间开销、典型适用四个维度归纳。迭代从初始条件出发向前推进,依托循环结构,空间开销通常为常量级,适用于递推关系清晰、状态可显式更新的问题;递归从目标问题出发向边界回溯,依托函数自调用与系统栈,每次调用占用栈帧,深度过大有溢出风险,适用于子问题结构与原问题同构的场合,如分治类问题、树与图的遍历。教师补充两者的深层联系:任何递归程序都能改写为迭代加显式栈的形式,二者在表达力上等价,差别在于哪种写法更贴近问题结构、更经济。选择的标准不是偏好,而是问题本身的形状。学生用一句话在学案末端写下今天的最大收获,随机点名分享。教师的结语落在两句话上:迭代是"踩着昨天的脚印往前走",递归是"把大石头敲成小石子,小石子自己会落地"。两种思想背后是同一种信念——再复杂的问题,都由可重复的简单结构堆叠而成。六、分层作业设计基础层:用迭代和递归两种方式分别实现1+2+3+……+n的求和与字符串反转,运行验证,并标注每份代码中的迭代三要素或递归两要素。提高层:用递归实现二分查找,与课上的迭代版本对比;为两个
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025届营口市老边区四年级数学第二学期期中学业质量监测模拟试题含答案解析
- 八年级英语第一单元被动语态短文改错题达标测试卷核心素养版
- 临床水痘护理试题及答案展示
- 建设工程监理合同与咨询合同协议
- 2026年夏季地下室仓储租赁合同范本三篇
- 课时作业43人口迁移
- 设计需体现人文关怀社会价值
- 土石方机械进场技术交底手册
- 商圈客流提升与运营优化方案
- 纤维装饰板原材料选型方案
- 管理会计第六版 教案 邵敬浩
- 2025年军政综合试题及答案
- 华能历年笔试真题及答案
- 水利工程建设标准强制性条文(2020版)宣贯课件
- 2025-2026学年北师大版(2021)小学心理健康四年级上册教学计划及进度表
- DB6108T 53-2023 煤基固废调理剂修复沙化土地技术规范
- 设备状态标识管理办法
- 作业登记表(合集)
- 2025年初级注册安全工程师(其他安全)历年参考题库含答案详解(5套)
- 小学国学教学课件
- 现代作物生产理论与技术
评论
0/150
提交评论