单元六 · 快速遍历数据

第23课 兔子增长有规律(2)

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

一、学习目标

  • 进一步了解兔子增长的数据递增规律,能够用流程图描述相应的算法。
  • 能够利用程序验证兔子增长问题的算法,体会算法与程序的对应关系。

二、情境导入

这一课继续探究「兔子增长问题」,通过用流程图描述算法,并用程序进行验证,感受用算法解决问题的基本过程。一起来继续探索吧!

三、核心讲解

本课学习路径:

1用流程图描述兔子增长算法
2用程序验证兔子增长算法

1.用流程图描述兔子增长算法

问题回顾:上一课我们探究了兔子增长问题——

  • 1 月:农场里有一对小兔。
  • 2 月:这对小兔长成一对大兔。
  • 3 月:大兔生一对小兔,农场里共 2 对兔。
  • 4 月:大兔再生一对小兔,上个月的小兔长成大兔,共 3 对兔。
  • 5 月:两对大兔各生一对小兔,上个月的小兔长成大兔,共 5 对兔。

以此类推,直到 12 月。假设兔都活着,到 12 月农场里共有 144 对兔。

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

  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]

想一想:流程图中的「判断 n ≤ 12」和「F[n] = F[n−1] + F[n−2]」分别对应程序中的什么结构?

2.用程序验证兔子增长算法

观察、运行程序,分析程序与算法的对应关系。程序实现思路:

  • 把 1 月、2 月兔的数量放入列表(第 0 项可设为 0)。
  • 设置要计算的起始月份;若月份数 n 小于等于 12,就进入循环。
  • 为列表增加一项,计算当前月份兔的数量 F[n]=F[n−1]+F[n−2]。
  • 月份数增加 1,继续计算,最后输出结果。
斐波那契数列:以上求解的兔子农场问题就是经典的斐波那契数列问题。意大利数学家莱昂纳多·斐波那契在 1202 年所著的《计算之书》中提出了有趣的兔子问题。斐波那契数列指的是:1、1、2、3、5、8、13、21、34、55、89……从第 3 个数开始,每一个数都等于前两个数之和,故又被称为兔子数列。

本课新语法与图形块

本课首次出现:定义函数 def。递推算法见流程图。

语法图形块说明
def fib(n):
…
定义函数
把一段步骤打包成可调用的名字

弄清以上要点后,再进入下方 Python Online,求第 n 月兔子数量并对照算法流程。

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

五年级 · 兔子增长(2):求第 n 月数量。

五、课堂总结

  • 依据用自然语言描述的算法画出相应的流程图,可以更加直观地理解算法。
  • 依据算法编写程序进行验证时,可以采用不同的程序语言、不同的实现方法。
  • 日常生活与学习中,只要用心观察,会发现有许多利用递推思维来思考并解决问题的例子。

六、拓展提升

  • 阅读下面的内容,了解自然界中一些符合斐波那契数列的独特现象。例如,有些树木各个年份的枝干数会构成斐波那契数列;向日葵种子排列形成的斐波那契螺旋有时能达到 89 个,这似乎是植物排列种子的优化方式。

测评

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

  1. 用流程图描述兔子增长算法有什么好处?

  2. 斐波那契数列(兔子数列)的规律是?

  3. 依据算法编写程序验证时,下列说法正确的是?

本节小结

兔子增长算法可用流程图直观呈现,也可用程序验证;其本质就是斐波那契递推。对照流程图读程序,能加深对「算法与程序对应关系」的理解。