原典
今有大人小儿共四十二人,一人须三穗,一人须一穗,问大人、小儿各几人?
——《算法统宗》卷五·盈不足
今有李白街上走,提壶去买酒。遇店加一倍,见花喝一斗。三遇店和花,喝光壶中酒。试问:壶中原有多少酒?
——《算法统宗》卷七·言古代数
这道题说的是什么
李白提着空壶去买酒,每遇到一家店,壶中的酒就翻倍;每看到一朵花,就喝掉一斗。他这样"遇店又遇花"重复了三次,最后壶正好空了。问:壶里原来有多少酒?
这道题看似简单,却蕴含了逆向推理的核心思想——从结果倒推原因。
示意图

三遇店和花:每次先遇店翻倍,再遇花喝一斗,三次后壶空。
逆向推理:从终点往回走
正向思考很困难——我们不知道初始量,却要预测三次操作后的结果。但逆向思考就简单了:
已知最终状态:0 斗。问:操作前三次,每次之前有多少?
设壶中原有酒 x 斗。
第三次遇花后为 0,说明第三次遇花前有 1 斗(喝掉 1 斗后变 0)。
而第三次遇花前的 1 斗,是第三次遇店翻倍的结果,所以第三次遇店前有:
21 斗(1)
第二次循环:第二次遇花后有 21 斗,说明第二次遇花前有 23 斗(喝 1 斗剩 21)。
第二次遇花前的 23 斗是第二次遇店翻倍的结果,所以第二次遇店前有:
43 斗(2)
第一次循环:同理,第一次遇花前有 45 斗,第一次遇店前有:
85 斗(3)
验证:85×2−1=41,41×2−1=−21
递推关系
设第 n 次遇店前有 an 斗酒。
遇店后:2an遇花后:2an−1=an+1(4)
边界条件:第三次遇花后为 0,即 2a3−1=0,所以 a3=21。
倒推:
an=2an+1+1(5)
计算:
a3=21,a2=221+1=43,a1=243+1=87
答案:壶中原有 87 斗酒。
验证:
- 原有 87,遇店 → 47,遇花 → 43
- 遇店 → 23,遇花 → 21
- 遇店 → 1,遇花 → 0 ✓
通项公式:等比数列的倒推
递推公式 an=2an+1+1 是一个线性递推。改写为:
an+1=2an−1(6)
这是形如 an+1=pan+q 的递推,通解为:
an=C⋅2n+1(7)
代入边界条件 a3=21:
C⋅8+1=21⟹C=−161
所以:
an=1−161⋅2n=1−2n−4(8)
初始量(n=1):
a1=1−2−3=1−81=87(9)
推广:k 次遇店和花
如果李白遇到了 k 次店和花,初始酒量为:
a1=1−2k1(10)
当 k=3 时,a1=1−81=87,与前面一致。
极限情况:当 k→∞ 时,a1→1。也就是说,如果李白无限次遇店遇花,他只需要 1 斗酒就"够用了"——每次翻倍后再喝 1 斗,酒量始终趋近于 1。
在高中数学体系里的位置
思想延伸:李白打酒问题本质上是一个一阶线性递推数列。高中数学中,形如 an+1=pan+q 的递推是数列章节的重点内容,解法是构造等比数列。
运算练兵场:递推公式的求解涉及等比数列通项、待定系数法,是高考数列大题的常见考法。
综合题常客:不定方程和递推数列常常结合出题,考查学生的转化能力和计算准确性。
思考与拓展
-
如果李白"四遇店和花"后壶空,壶中原有多少酒?
-
证明:对于 k 次遇店和花,初始酒量为 1−2k1。
-
如果每次遇店加一倍后,遇到花喝的不是 1 斗而是 d 斗,求初始酒量的通项公式。
-
查阅资料:这个问题在宋代《算学启蒙》中也有记载,称为"李白沽酒"。比较两个版本的异同。
一句话总结
李白打酒用逆向推理将复杂过程简化为线性递推,体现了"从结果反推条件"的数学思维,是一阶线性递推数列的经典入门题。
— Y. · 2026-10-28"