斐波那契数列是一个非常美丽、和谐的数列,有人说它起源于一对繁殖力惊人、基因非常优秀的兔子,也有人说远古时期的鹦鹉螺就知道这个规律。
斐波那契数列由如下递推关系式定义:
F
(
n
)
=
{
0
if n = 0
1
if n = 1
F
(
n
−
1
)
+
F
(
n
−
2
)
if n >1
F(n) = \begin{cases} 0 & \text{if n = 0}\\ 1 & \text{if n = 1}\\ F(n-1)+F(n-2) &\text{if n >1} \end{cases}
F(n)=⎩⎪⎨⎪⎧01F(n−1)+F(n−2)if n = 0if n = 1if n >1
int Fibonacci (int n)
{
if (n <= 0) return 0;
else if (n == 1) return 1;
else return Fibonacci(n - 1) + Fibonacci(n - 2);
}
求解通项公式
由递推公式
F
(
n
)
=
F
(
n
−
1
)
+
F
(
n
−
2
)
,
我
们
知
道
F
(
n
)
的
特
征
方
程
为
:
F(n) = F(n-1) + F(n-2),我们知道F(n)的特征方程为:
F(n)=F(n−1)+F(n−2),我们知道F(n)的特征方程为:
x
2
=
x
+
1
x^2 = x + 1
x2=x+1
有根:
X
1
,
2
=
1
±
5
2
X_{1,2} = \frac{1\pm\sqrt{5}}{2}
X1,2=21±5
所以存在$A,B $ 使得:
F
(
n
)
=
A
×
(
1
+
5
2
)
n
+
B
×
(
1
−
5
2
)
n
F(n) = A\times(\frac{1+\sqrt{5}}{2})^n+B\times(\frac{1-\sqrt{5}}{2})^n
F(n)=A×(21+5)n+B×(21−5)n
代入
F
(
0
)
=
0
,
F
(
1
)
=
1
F(0) = 0,F(1) = 1
F(0)=0,F(1)=1,解得
A
=
5
5
,
B
=
−
5
5
A=\frac{\sqrt{5}}{5},B=-\frac{\sqrt{5}}{5}
A=55,B=−55
F
(
n
)
=
5
5
×
(
1
+
5
2
)
n
−
5
5
×
(
1
−
5
2
)
n
F(n) = \frac{\sqrt{5}}{5}\times(\frac{1+\sqrt{5}}{2})^n-\frac{\sqrt{5}}{5}\times(\frac{1-\sqrt{5}}{2})^n
F(n)=55×(21+5)n−55×(21−5)n
通过公式,我们可以在O(1)的时间内得到F(n)。但公式中引入了无理数,所以不能保证结果的精确。
扩展问题
假
设
A
(
0
)
=
1
,
A
(
1
)
=
2
,
A
(
2
)
=
2.
对
于
n
>
2
,
都
有
A
(
k
)
=
A
(
k
−
1
)
+
A
(
k
−
2
)
+
A
(
k
−
3
)
假设A(0) = 1, A(1) = 2, A(2) = 2.对于n>2,都有A(k) = A(k-1) + A(k-2) + A(k-3)
假设A(0)=1,A(1)=2,A(2)=2.对于n>2,都有A(k)=A(k−1)+A(k−2)+A(k−3)
- 对 于 任 何 一 个 给 定 的 n , 如 何 计 算 出 A ( n ) ? 对于任何一个给定的n,如何计算出A(n)? 对于任何一个给定的n,如何计算出A(n)?
- 对 于 n 非 常 大 的 情 况 , 如 n = 2 60 的 时 候 , 如 何 计 算 A ( n ) m o d M ( M < 100000 ) 呢 ? 对于n非常大的情况,如n = 2^{60}的时候,如何计算A(n) \mod M (M\lt100000)呢? 对于n非常大的情况,如n=260的时候,如何计算A(n)modM(M<100000)呢?
由递推公式
A
(
k
)
=
A
(
k
−
1
)
+
A
(
k
−
2
)
+
A
(
k
−
3
)
,
我
们
知
道
A
(
n
)
的
特
征
方
程
为
:
A(k) = A(k-1) + A(k-2) + A(k-3),我们知道A(n)的特征方程为:
A(k)=A(k−1)+A(k−2)+A(k−3),我们知道A(n)的特征方程为:
x
3
=
x
2
+
x
+
1
x^3 = x^2+ x + 1
x3=x2+x+1
所以存在
A
,
B
,
C
A,B,C
A,B,C使得:
A
(
n
)
=
−
A
+
B
×
(
1
+
5
2
)
n
+
C
×
(
1
−
5
2
)
n
A(n) = -A+B\times(\frac{1+\sqrt{5}}{2})^n+C\times(\frac{1-\sqrt{5}}{2})^n
A(n)=−A+B×(21+5)n+C×(21−5)n
解得:
A
(
n
)
=
4
3
+
5
−
1
6
×
(
1
+
5
2
)
n
−
5
+
1
6
×
(
1
−
5
2
)
n
A(n) = \frac43 + {\sqrt{5}-1\over6}\times(\frac{1+\sqrt{5}}{2})^n-{\sqrt{5}+1\over6}\times(\frac{1-\sqrt{5}}{2})^n
A(n)=34+65−1×(21+5)n−65+1×(21−5)n