这题来自NOIP2017提高初赛题
设函数
f
n
=
(
f
n
−
1
+
f
n
−
2
)
/
2
f_n=(f_{n-1}+f_{n-2})/2
fn=(fn−1+fn−2)/2
f
1
=
0
,
f
2
=
1
f_1=0,f_2=1
f1=0,f2=1
求
f
n
f_n
fn的递推式,
有一个很辣鸡但很清真的方法:
如果我们把式子表示成:
f
n
+
a
∗
f
n
−
1
=
k
(
f
n
−
1
+
a
∗
f
n
−
2
)
f_n+a*f_{n-1}=k(f_{n-1}+a*f_{n-2})
fn+a∗fn−1=k(fn−1+a∗fn−2)
那是不是就是一个等比数列啦~(
g
n
=
k
∗
g
n
−
1
g_n=k*g_{n-1}
gn=k∗gn−1)
来看看a,k这两个系数是啥,
f
n
+
a
∗
f
n
−
1
=
(
0.5
+
a
)
∗
f
n
−
1
+
0.5
∗
f
n
−
2
f_n+a*f_{n-1}=(0.5+a)*f_{n-1}+0.5*f_{n-2}
fn+a∗fn−1=(0.5+a)∗fn−1+0.5∗fn−2
设方程(两边对应的比值相等)
1
0.5
+
a
=
a
0.5
\frac{1}{0.5+a}=\frac{a}{0.5}
0.5+a1=0.5a
解得: a 1 = 0.5 , a 2 = − 1 a_1=0.5\ ,\ a_2=-1 a1=0.5 , a2=−1
所以:
f
n
+
0.5
f
n
−
1
=
(
f
n
−
1
+
0.5
∗
f
n
−
2
)
f_n+0.5f_{n-1}=(f_{n-1}+0.5*f_{n-2})
fn+0.5fn−1=(fn−1+0.5∗fn−2)
f
n
−
f
n
−
1
=
−
0.5
∗
(
f
n
−
1
−
f
n
−
2
)
f_n-f_{n-1}=-0.5*(f_{n-1}-f_{n-2})
fn−fn−1=−0.5∗(fn−1−fn−2)
又因为:
f
1
=
0
,
f
2
=
1
f_1=0,f_2=1
f1=0,f2=1
所以:
f
n
+
0.5
f
n
−
1
=
1
f_n+0.5f_{n-1}=1
fn+0.5fn−1=1
f
n
−
f
n
−
1
=
(
−
1
2
)
n
−
1
f_n-f_{n-1}=(-\frac{1}{2})^{n-1}
fn−fn−1=(−21)n−1
消去 f n − 1 f_{n-1} fn−1: f n = 2 + ( − 1 2 ) n − 1 3 f_n=\frac{2+(-\frac{1}{2})^{n-1}}{3} fn=32+(−21)n−1