单元一 · 无处不在的算法

第3课 游戏体验寻规律

任务场景
任务场景:游戏体验寻规律

一、学习目标

  • 通过体验汉诺塔益智类游戏,了解其中存在的操作规律。
  • 进一步认识算法是通过明确的、可执行的操作步骤描述的问题求解方案。

二、情境导入

你玩过汉诺塔益智游戏吗?玩的过程中,感受如何呢?

三、核心讲解

本课学习路径:

1探究汉诺塔游戏规律
2试玩汉诺塔程序游戏

1.探究汉诺塔游戏规律

汉诺塔游戏有三根柱子,在其中一根柱子上有一些大小不同的圆环。要求把圆环从起始位置移动到目标位置。规则如下:

  • 每次只能移动一个圆环。
  • 在移动过程中,可以借助任意一个有圆环或者没有圆环的柱位,但要保持小圆环始终在大圆环的上面。

柱 1 上有由三个圆环组成的汉诺塔,请把圆环从柱 1 移动到柱 3,描述移动的过程。

想一想:初始状态和完成状态分别是什么?解题的关键是什么?(关键:借助中间的柱 2 完成;每次只能移动一个圆环,且小圆环必须在大圆环上面。)

先分析只有两个圆环的情况;有了体验后,再完成移动三个圆环的任务。用表格描述移动三个圆环的过程:

  1. 小环:柱 1 → 柱 3
  2. 中环:柱 1 → 柱 2
  3. 小环:柱 3 → 柱 2
  4. 大环:柱 1 → 柱 3
  5. 小环:柱 2 → 柱 1
  6. 中环:柱 2 → 柱 3
  7. 小环:柱 1 → 柱 3

有四个圆环时:忽略最大圆环,用移动三个圆环的方法把它们移到柱 2,再把最大圆环移到柱 3,最后把柱 2 上的三个圆环移到柱 3。

移动四个圆环:移动三个圆环 + 移动一个圆环 + 移动三个圆环。
  • 圆环为奇数时,第一步将最小圆环移动到柱 3,所用步骤最少。
  • 圆环为偶数时,第一步将最小圆环移动到柱 2,所用步骤最少。

只要学会移动两个或三个圆环,即使再增加圆环个数,也是先把最大圆环之上的所有圆环移到柱 2 或柱 3,再重复操作,逐个移到目标位——不管多少个圆环,最终都能达成目标。

2.试玩汉诺塔程序游戏

本课下方动手体验中提供了「试玩汉诺塔程序游戏」(精简递归)。请载入并运行,切换到「图像」观看;核心是 hanoi 三次递归调用。

活动要求:选择不同数量的圆环来体验这个游戏,小组同学比一比移动圆环的数量和所用的时间。

  • 游戏过程中,注意观察盘子移动的情况,总结其中的规律。
  • 游戏需要在英文输入状态下操作。

想一想:这个游戏是否也遵循了算法的基本流程?其中的输入、处理和输出分别是什么?

弄清以上要点后,再进入下方动手体验:可选「找下一个数」,或「试玩汉诺塔程序游戏」用海龟演示三环七步。

四、动手体验 · Python 3 Online 编程

本课含 2 个程序。汉诺塔为精简递归图形化程序:载入后运行,在「图像」中逐步观看。

五年级 · 寻规律:观察数列,试着改规律再运行。

五、课堂总结

  • 在体验汉诺塔益智游戏的过程中,知道其中存在的操作规律。
  • 汉诺塔游戏中的操作规律包含了一种算法,游戏过程遵循算法的基本流程(输入—处理—输出)。
  • 进一步理解,算法是通过明确的、可执行的操作步骤描述的问题求解方案。

六、拓展提升

  • 求解量水问题。现在有两个量杯,一个容积是 5 升,一个容积是 3 升,杯壁上没有刻度线,如何准确地量出 4 升水?要求:参照本课汉诺塔游戏的描述过程,用操作步骤描述问题解决的方法。可以使用第三个没有刻度的容器。

测评

选出后点「检查」。答错会显示简短说明。

  1. 汉诺塔游戏的正确规则是?

  2. 移动四个圆环时,可归纳为哪种思路?

  3. 关于汉诺塔与算法,下列说法正确的是?

本节小结

汉诺塔里有可重复的操作规律;先会移两三个圆环,就能扩展到更多。规律就是算法,遵循输入—处理—输出。