猜数字,也能成为一堂真正的算法课

作者:浩哥AI实验室

如果我在 1 到 100 之间藏了一个数字,你会怎么找?

有人会从 1 开始逐个猜。

有人会先猜 50,再根据“大了”或“小了”继续缩小范围。

这个小游戏,大多数孩子都玩过。

但如果我们不急着告诉他“这叫二分查找”,而是让他先预测、亲手试、拿卡片演出来,最后再写一小段代码,它就可以变成一堂完整的算法课。

这也是我做 WHSK 104《算法之美》的起点:做一套小学生都能理解的算法课。

课程地址:猜一个数字,怎样问得更少?

猜一个数字,怎样问得更少

算法不应该先从名字开始

如果一上来就讲“二分查找的时间复杂度是 O(log n)”,很多孩子会立刻觉得算法离自己很远。

但换成“怎样少猜几次”,问题马上变得具体。

课程先让孩子做出预测:从 1 逐个猜、每次猜中间,还是两种方法差不多?

然后系统藏一个数字。

孩子每猜一次,页面都会告诉他大了还是小了,并把不可能的范围直接拿掉。他能看到,猜中间数不是某种需要服从的口诀,而是因为一次回答可以排除大约一半可能。

这时候再给它一个名字,“二分查找”才有了真正的含义。

但我不希望孩子只对着屏幕

做完网页互动以后,我特意加入了一个“离开屏幕”的环节。

家里有扑克牌,就取 A 到 K。

没有扑克牌,就把一张纸裁成 20 个小条,分别写上 1 到 20。

一个人藏数字,一个人负责猜。每得到一次“大了”或“小了”的回答,就亲手把不可能的卡片拿走。

用扑克牌或纸条把排除一半摆到桌面上

这个动作很重要。

屏幕里的范围缩小是一段动画。

桌面上的范围缩小,是孩子亲手拿走十张卡片、五张卡片、两张卡片。他能直接感受到,一个好问题究竟减少了多少可能。

家长也不需要讲课,只需要问:

哪一次拿走的卡片最多?

为什么靠近中间的位置通常更有用?

如果有 1000 张数字卡,你觉得最多要猜多少次?

我越来越觉得,儿童算法课不应该等于儿童坐在电脑前的时间。

算法本来就是一种解决问题的办法。纸、笔、扑克牌、积木,甚至家人站成一排,都可以成为算法材料。

如果你认同这种“屏幕上发现、桌面上验证”的学习方式,可以关注公众号或视频号“浩哥AI实验室”。后面的课程也会继续提供可以在家一起玩的版本。

还要不要亲手写代码?

这又回到了 AI 时代最容易争论的问题。

既然 AI 会写代码,孩子还有必要写吗?

我的处理不是二选一,而是把同一个练习分成三个难度:

填一个空。

补关键一步。

自己写出来。

每个难度都有逐层提示。孩子可以只填出“分成两份”里的数字 2,也可以补上取中间值的表达式,还可以自己完成整个查找过程。

浏览器中的三档算法代码陪练

代码只在浏览器里运行,不发送到服务器;如果写出死循环,1.5 秒后会自动停止。

我希望代码在这里扮演的角色不是门槛,而是另一种表达。

孩子先用手把办法做出来,再尝试准确地写给电脑。AI 可以帮他补语法,但“为什么要取中间”“怎样证明找到了”,必须由孩子自己回答。

一堂课的四种表达

这套课最终形成了一个固定结构:

屏幕上玩 → 自己讲清 → 桌边动手 → 代码验证。

同一个算法,经过图形、语言、实物和代码四种表达,理解会比单纯听一次讲解扎实得多。

第一课已经开放:https://howie.wang/WHSK/104/01/

公众号和视频号“浩哥AI实验室”会继续记录课程与 AI 实践;更偏家庭活动、儿童学习和成长方法的内容,会同步更新在视频号“浩哥AI实验室·成长研究”。公众号微信号:de8ug-vip。