前面的话
近几年的初赛,尤其是题型变成选择后,对计算机基础知识的要求不那么高,反而对程序理解、数学知识之类的东西是愈加重视。所以,我在这两方面选取了几类不是那么好做的题型,分享做法。
特征方程
这种题目通常是给出二项递推式,形如 cf(n)=af(n−1)+bf(n−2)cf(n)=af(n-1)+bf(n-2)cf(n)=af(n−1)+bf(n−2),然后让你写出,在 nnn 不断增大的过程中,f(n)f(n)f(n) 趋近于多少。
我以前的做法是强算到 f(7)f(7)f(7) 左右,然后选一个最接近的答案。但是这样不仅耗时,而且正确性也不保证。
接下来介绍一种特征方程的解法。
你不需要知道原理,只要知道怎么用就行了。——Rayleigh666
其步骤如下:
- 将原式移项得到:cf(n)−af(n−1)−bf(n−2)=0cf(n)-af(n-1)-bf(n-2)=0cf(n)−af(n−1)−bf(n−2)=0;
- 我们把 f(n)=x2,f(n−1)=x,f(n−2)=1f(n)=x^2,f(n-1)=x,f(n-2)=1f(n)=x2,f(n−1)=x,f(n−2)=1 带入得到 cx2−ax−b=0cx^2-ax-b=0cx2−ax−b=0;
- 设这个一元二次方程的解为 x1,x2x_1,x_2x1,x2,则有 f(n)=Ax1n−1+Bx2n−1f(n)=Ax_1^{n-1}+Bx_2^{n-1}f(n)=Ax1n−1+Bx2n−1;
- 然后我们把初始已知的两个 f(n)f(n)f(n) 带入可求得 A,BA,BA,B 的值;
- 然后可以得出 f(n)f(n)f(n) 的通项式,从而将无穷大带入可以得到答案。
接下来我们举个例子。
已知 f(1)=1,f(2)=56,3f(n+1)=5f(n)−2f(n−1)f(1)=1,f(2)=\dfrac{5}{6},3f(n+1)=5f(n)-2f(n-1)f(1)=1,f(2)=65,3f(n+1)=5f(n)−2f(n−1),当 nnn 增大时,f(n)f(n)f(