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