单元一 · 无处不在的算法
第3课 游戏体验寻规律

一、学习目标
- 通过体验汉诺塔益智类游戏,了解其中存在的操作规律。
- 进一步认识算法是通过明确的、可执行的操作步骤描述的问题求解方案。
二、情境导入
你玩过汉诺塔益智游戏吗?玩的过程中,感受如何呢?
三、核心讲解
本课学习路径:
1.探究汉诺塔游戏规律
汉诺塔游戏有三根柱子,在其中一根柱子上有一些大小不同的圆环。要求把圆环从起始位置移动到目标位置。规则如下:
- 每次只能移动一个圆环。
- 在移动过程中,可以借助任意一个有圆环或者没有圆环的柱位,但要保持小圆环始终在大圆环的上面。
柱 1 上有由三个圆环组成的汉诺塔,请把圆环从柱 1 移动到柱 3,描述移动的过程。
想一想:初始状态和完成状态分别是什么?解题的关键是什么?(关键:借助中间的柱 2 完成;每次只能移动一个圆环,且小圆环必须在大圆环上面。)
先分析只有两个圆环的情况;有了体验后,再完成移动三个圆环的任务。用表格描述移动三个圆环的过程:
- 小环:柱 1 → 柱 3
- 中环:柱 1 → 柱 2
- 小环:柱 3 → 柱 2
- 大环:柱 1 → 柱 3
- 小环:柱 2 → 柱 1
- 中环:柱 2 → 柱 3
- 小环:柱 1 → 柱 3
有四个圆环时:忽略最大圆环,用移动三个圆环的方法把它们移到柱 2,再把最大圆环移到柱 3,最后把柱 2 上的三个圆环移到柱 3。
- 圆环为奇数时,第一步将最小圆环移动到柱 3,所用步骤最少。
- 圆环为偶数时,第一步将最小圆环移动到柱 2,所用步骤最少。
只要学会移动两个或三个圆环,即使再增加圆环个数,也是先把最大圆环之上的所有圆环移到柱 2 或柱 3,再重复操作,逐个移到目标位——不管多少个圆环,最终都能达成目标。
2.试玩汉诺塔程序游戏
本课下方动手体验中提供了「试玩汉诺塔程序游戏」(精简递归)。请载入并运行,切换到「图像」观看;核心是 hanoi 三次递归调用。
活动要求:选择不同数量的圆环来体验这个游戏,小组同学比一比移动圆环的数量和所用的时间。
- 游戏过程中,注意观察盘子移动的情况,总结其中的规律。
- 游戏需要在英文输入状态下操作。
想一想:这个游戏是否也遵循了算法的基本流程?其中的输入、处理和输出分别是什么?
弄清以上要点后,再进入下方动手体验:可选「找下一个数」,或「试玩汉诺塔程序游戏」用海龟演示三环七步。
四、动手体验 · Python 3 Online 编程
本课含 2 个程序。汉诺塔为精简递归图形化程序:载入后运行,在「图像」中逐步观看。
五年级 · 寻规律:观察数列,试着改规律再运行。
正在载入 Python 3 Online
正在载入编程环境…
五、课堂总结
- 在体验汉诺塔益智游戏的过程中,知道其中存在的操作规律。
- 汉诺塔游戏中的操作规律包含了一种算法,游戏过程遵循算法的基本流程(输入—处理—输出)。
- 进一步理解,算法是通过明确的、可执行的操作步骤描述的问题求解方案。
六、拓展提升
- 求解量水问题。现在有两个量杯,一个容积是 5 升,一个容积是 3 升,杯壁上没有刻度线,如何准确地量出 4 升水?要求:参照本课汉诺塔游戏的描述过程,用操作步骤描述问题解决的方法。可以使用第三个没有刻度的容器。
测评
选出后点「检查」。答错会显示简短说明。
汉诺塔游戏的正确规则是?
移动四个圆环时,可归纳为哪种思路?
关于汉诺塔与算法,下列说法正确的是?
本节小结
汉诺塔里有可重复的操作规律;先会移两三个圆环,就能扩展到更多。规律就是算法,遵循输入—处理—输出。