步步为营找规律:递推

什么是递推?

递推就是从第一个数字按照特定的公式一步一步计算出后面所有数字的过程。

图1

预习篇

1. 请观察下面这些数字有什么特点并写出第10个数字应该是多少?

1、1、2、3、5、8、13、...

那么按照这个规律,这个数列第10个数字为__________

2. 斐波那契数列(Fibonacci sequence)

斐波那契数列(Fibonacci sequence),又称黄金分割数列,因数学家莱昂纳多·斐波那契(Leonardo Fibonacci)以兔子繁殖为例子而引入,故又称为“兔子数列”,指的是这样一个数列:1、1、2、3、5、8、13、21、34、……

斐波那契数列的递推公式为:

{an=1(n=1n=2)an=an1+an2(n3)

它的第1项和第2项是均为1,从第3项开始,每一项等于前面2项的和。由于他在某些条件下符合黄金分割比列,所以也被称为黄金分割数列。

生活中有很多符合斐波那契数列的实例,你能在下面这个视频中找到几个呢?

视频1

 

课后篇

一、这节课我学到了:

图2

 

1.1. 什么是递推?

通过已知条件,利用特定关系得出中间推论,并利用中间推论逐步递推出最终结果。

这种不断利用已有的信息推导出新的信息的方法,被称为递推算法。

解题关键在于:递推关系的寻找,要注意边界值的递推公式可能会有所变化。

 

1.2. 模板 取数问题

题目描述

小刘的叔叔新开了一家养殖场,准备引入一种宠物兔子进行养殖,如果一对兔子每月能生一对小兔子,而每对小兔子从它们出生后的第3个月起,又能开始生一对小兔子,假定在不发生死亡的情况下,由一对刚出生的小兔子开始,第n个月养殖场有多少对兔子?

请将程序补充完整。

 

输入

输入1行,包含1个正整数n1n40

 

输出

输出1行,假定不发生死亡的情况下,由一对刚出生的小兔子开始,输出n个月后有多少对兔子。

 

样例输入:

 

样例输出:

 

1.3. 解题关键

“递推法”解题首先要分析归纳出“递推关系”

解决递推问题有三个重点: 1、建立正确的递推关系式; 2、分析递推关系式的边界值; 3、根据递推关系式编程求解。 递推法分为“顺推”和“倒推”两类模型: 1、顺推,就是从问题的边界值出发,通过递推关系式依次从前往后递推出问题的解; 2、倒推,就是在不知道问题的边界值,从问题的最终解(目标状态或某个中间状态)出发,反过来推导问题的初始状态。 递推的思路比较灵活,在找不到思路的时候可以暴力计算简单情况后观察规律。

 

1.4. 两个易错点

❌ One

数组不进行初始化。

比如斐波那契数列的递推公式:a[i]=a[i1]+a[i2]

如果不知道a[1]a[2],递推计算就无法开始。

初学就容易写错为

 

❌ Two

边界值递推公式可能有变化。

有同学喜欢用if语句单独输出斐波那契数列的第1项和第2项,但是在写的时候容易忘记。

 

 

二、课后作业

题目 * 3 
输出亲朋字符串 
同行列对角线的格子 
求分数序列和 

 

三、真题重现

 

3.1 选择题 [2021普及组初赛第13题改编]

考虑如下递推算法伪代码,则计算n=7得到的结果为( )。

A.105 B.840 C.210 D.420

3.2 填空题 [2014普及组初赛第24题改编]

考虑如下递推算法伪代码,则计算输入7得到的结果为( )。

A.105 B.840 C.210 D.420

 

 

四、挑战题目

题目 
计算多项式的导函数 
Pell数列 
平面分割