单元六 · 快速遍历数据
第22课 兔子增长有规律(1)

一、学习目标
- 结合问题情境,依据图示,能够通过表格列出兔的数量变化。
- 观察列表呈现的数据,能够发现数据变化的规律,认识其中存在的算法。
二、情境导入
上一课学习了中国古代的一个经典算法问题,这一课将学习来自国外的一个经典算法,探究「兔子农场的兔子增长」问题。
1 月,农场里有一对小兔;2 月,这对小兔长成一对大兔;3 月,这对大兔生了一对小兔,这时农场里有 2 对兔;4 月,大兔又生了一对小兔,上个月的小兔长成了大兔,这时农场里有 3 对兔;5 月,两对大兔各生了一对小兔,上个月的小兔长成了大兔,这时农场里有 5 对兔……以此类推,直到 12 月。
想一想:到 12 月的时候,假设兔都活着,那么农场里有多少对兔?
三、核心讲解
本课学习路径:
1.探寻兔的数量变化规律
依据前面的图示,用列表法推演,把每个月兔的数量进行列举和统计。
从 3 月开始,每个数都是前两个数相加的和。列表如下(单位:对):
| 类别 | 1月 | 2月 | 3月 | 4月 | 5月 | 6月 | 7月 | 8月 | 9月 | 10月 | 11月 | 12月 |
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 小兔 | 1 | 0 | 1 | 1 | 2 | 3 | 5 | 8 | 13 | 21 | 34 | 55 |
| 大兔 | 0 | 1 | 1 | 2 | 3 | 5 | 8 | 13 | 21 | 34 | 55 | 89 |
| 总数 | 1 | 1 | 2 | 3 | 5 | 8 | 13 | 21 | 34 | 55 | 89 | 144 |
如果用 F[1]、F[2]、F[3]……F[12] 分别表示从 1 月到 12 月兔的数量,则 F[1]=1,F[2]=1,F[3]=F[2]+F[1],F[4]=F[3]+F[2]……F[12]=F[11]+F[10]。
2.用算法描述兔的数量变化
找到兔子增长的规律后,通过创建循环结构,就可以描述算法。
- F[1] 和 F[2] 的初始值都设为 1,表示 1 月和 2 月兔的数量。
- 用循环变量 n 表示月份,初始值设为 3。
- 建立循环结构:如果 n ≤ 12,就进入循环;F[n] = F[n−1] + F[n−2];将 n 加 1,继续循环。
- 当 n > 12 时,结束循环,输出 F[12] 的值。
流程图:兔子增长递推(n≤12)
本课无新基础语法;斐波那契递推在程序中观察。
弄清以上要点后,再进入下方 Python Online,输出兔子增长数列的前若干项。
四、动手体验 · Python 3 Online 编程
五年级 · 兔子增长(1):输出前若干项。
正在载入 Python 3 Online
正在载入编程环境…
五、课堂总结
- 通过表格呈现数据变化的过程,可以直观地找出数据变化的规律。
- 兔子增长问题的特点是数据有规律地递增,可以通过递推计算数据,从已知数据开始,一步一步地求出未知数据。
六、拓展提升
- 兔子玩跳台阶问题:假设兔子农场里有一只兔子在玩跳台阶。它一次可以跳 1 级或者 2 级台阶,现在总共有 8 级台阶,兔子跳完这些台阶,有多少种不同的跳法?
测评
选出后点「检查」。答错会显示简短说明。
兔子增长问题中,从 3 月开始每个月兔的数量有什么规律?
用算法描述兔子增长时,F[1] 和 F[2] 的初始值应设为多少?
「递推」算法的主要特点是?
本节小结
用表格列举每月兔的数量,能发现「前两项之和」的递推规律;用循环和 F[n]=F[n−1]+F[n−2] 即可描述算法。递推体现了从已知到未知的正向思维。