单元六 · 快速遍历数据

第22课 兔子增长有规律(1)

任务场景
任务场景:兔子增长有规律(1)

一、学习目标

  • 结合问题情境,依据图示,能够通过表格列出兔的数量变化。
  • 观察列表呈现的数据,能够发现数据变化的规律,认识其中存在的算法。

二、情境导入

上一课学习了中国古代的一个经典算法问题,这一课将学习来自国外的一个经典算法,探究「兔子农场的兔子增长」问题。

1 月,农场里有一对小兔;2 月,这对小兔长成一对大兔;3 月,这对大兔生了一对小兔,这时农场里有 2 对兔;4 月,大兔又生了一对小兔,上个月的小兔长成了大兔,这时农场里有 3 对兔;5 月,两对大兔各生了一对小兔,上个月的小兔长成了大兔,这时农场里有 5 对兔……以此类推,直到 12 月。

想一想:到 12 月的时候,假设兔都活着,那么农场里有多少对兔?

三、核心讲解

本课学习路径:

1探寻兔的数量变化规律
2用算法描述兔的数量变化

1.探寻兔的数量变化规律

依据前面的图示,用列表法推演,把每个月兔的数量进行列举和统计。

从 3 月开始,每个数都是前两个数相加的和。列表如下(单位:对):

类别 1月2月3月4月5月 6月7月8月9月10月 11月12月
小兔 1011235813213455
大兔 01123581321345589
总数 1123581321345589144
发现规律:从 3 月开始,每个月兔的数量是前两个月的数量之和。

如果用 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.用算法描述兔的数量变化

找到兔子增长的规律后,通过创建循环结构,就可以描述算法。

  1. F[1] 和 F[2] 的初始值都设为 1,表示 1 月和 2 月兔的数量。
  2. 用循环变量 n 表示月份,初始值设为 3。
  3. 建立循环结构:如果 n ≤ 12,就进入循环;F[n] = F[n−1] + F[n−2];将 n 加 1,继续循环。
  4. 当 n > 12 时,结束循环,输出 F[12] 的值。

流程图:兔子增长递推(n≤12)

开始F[1]=1, F[2]=1n = 3n ≤ 12?是F[n]=F[n−1]+F[n−2]n = n+1继续循环否输出 F[12]
规律总结:数据递推是按照一定的规律来计算、推导一组数的变化规律。兔子农场问题是一个典型的递推问题,从已知数据开始,一步一步地求出未知数据,这是一种用正向思维解决问题的方式。

本课无新基础语法;斐波那契递推在程序中观察。

弄清以上要点后,再进入下方 Python Online,输出兔子增长数列的前若干项。

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

五年级 · 兔子增长(1):输出前若干项。

五、课堂总结

  • 通过表格呈现数据变化的过程,可以直观地找出数据变化的规律。
  • 兔子增长问题的特点是数据有规律地递增,可以通过递推计算数据,从已知数据开始,一步一步地求出未知数据。

六、拓展提升

  • 兔子玩跳台阶问题:假设兔子农场里有一只兔子在玩跳台阶。它一次可以跳 1 级或者 2 级台阶,现在总共有 8 级台阶,兔子跳完这些台阶,有多少种不同的跳法?

测评

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

  1. 兔子增长问题中,从 3 月开始每个月兔的数量有什么规律?

  2. 用算法描述兔子增长时,F[1] 和 F[2] 的初始值应设为多少?

  3. 「递推」算法的主要特点是?

本节小结

用表格列举每月兔的数量,能发现「前两项之和」的递推规律;用循环和 F[n]=F[n−1]+F[n−2] 即可描述算法。递推体现了从已知到未知的正向思维。