递推法

2023-06-22 15:57曹晓敏
发明与创新·小学生 2023年8期
关键词:芙蓉区幼崽小子

“琦琦养了1对小兔子,2个月之后小兔子就具备了繁殖能力,算是‘成年兔了。假设成年兔每个月生育1对幼崽,且兔子们都健康地活着,那么100个月后,一共生出了多少对大大小小的兔子呢?”岭童小子一边念题目,一边抓脑袋——计算量这么大,啥时候才能算出来呀!

面对难题,他没有放弃,而是继续思考:1个月后幼崽1对,成年兔0对,兔子一共只有1对。2个月后幼崽刚成年,还不能生育小兔子,此时幼崽0对,成年兔1对,兔子总数为1对。3个月后,成年兔生育出1对幼崽,兔子总数为2对……

算到这里,岭童小子开始“晕”了。

“能不能请星空帮忙呢?他的特点不就是运算速度快吗?”岭童小子一边嘟哝着一边看向星空。星空默不作声地看着他,似乎在说:“你怎么才想到我呀!”

有了小帮手,岭童小子立刻拿出草稿纸,开始列表分析。

咦!岭童小子从表格里发现了一个有趣的现象:从第3个月开始,每个月的兔子总数是前面2个月兔子总数的和。有办法了!按捺住内心的激动,岭童小子开始敲打键盘——编程开始了!

时间一分一秒地过去,岭童小子一点儿都不觉得累,终于——

“嘿嘿,我真聪明!一下子就计算出了兔子100个月后的总数。而且,不管你想知道哪个月的兔子总数,我都可以随时告诉你!咱编写的程序就是这么牛!”岭童小子得意极了。

哈哈,嶺童小子真聪明,还会用表格分析数据。

从初始的一个或若干个数据出发,通过递推关系逐步推进,从而得到最终结果,这种求解问题的方法叫“递推法”。在递推问题中,每个数据都和它前面或后面的若干个数据有一定关联,这种关联可以通过“递推关系式”来表示。

岭童小子列出了每个月的兔子总数分别为:1、1、2、3、5、8、13、21、34……从中可以看出,它的递推关系式为:当月兔子总数=上个月的兔子总数+上上个月的兔子总数。

从第三项开始,每一项都是前两项的和,这就形成了一个著名的数列——斐波那契数列。在编写程序时,我们需要用到列表,用来存放每个月的兔子总数。岭童小子很聪明,建立了一个名为“当月兔子总数”的列表。

第一步,将第1个月的兔子数量1加入“当月兔子总数”这个列表中。代码见图1。

第二步,将第2个月的兔子数量1继续加入“当月兔子总数”这个列表中。代码见图2。

第三步,把上个月的兔子总数与上上个月的兔子总数相加,将它们的和加入“当月兔子总数”这个列表里。代码见图3。

将第三步循环,一步一步递推,直到你需要知道的月份为止。这样,我们就能得到最终的结果。

同学们,你们看懂了吗?扫描下方的小程序码,看看长沙市芙蓉区马坡岭小学的优秀作品吧!

曹晓敏:湖南省特级教师,湖南省优秀科技辅导员,长沙市首批卓越教师,长沙市骨干教师,长沙市芙蓉区马坡岭小学信息技术教师。

猜你喜欢
芙蓉区幼崽小子
双胞胎幼崽
当人类幼崽碰上小动物
海豹幼崽可以像人类一样改变声调
长沙芙蓉区全面提升教师素养
书法诗句其一
长沙芙蓉区举办美术教师微课制作线上培训会
长沙芙蓉区举办美术教师微课制作线上培训会
炫酷小子
好动小子王妥妥
别人家的虎小子(下)