斐波那契数列
斐波那契数列
该数列的前几项如下:
\[0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89……
\]
斐波那契的O(n)计算通式:
\[F_0 = 0, F_1 = 1, ……,F_n = F_{n - 1} + F_{n - 2}
\]
卢卡斯数列
前几项如下:
\[2, 1, 3, 4, 7, 11, 18, 29, 47, 76, 123, 199.......
\]
O(n)计算通式
\[L_0 = 2, L_1 = 1, ......, L_n = L_{n - 1} + L_{n - 2}
\]
斐波那契的通项公式
第 n 个斐波那契数可以在 O(n) 的复杂度内计算出来,对于很多时候 O(n) 的时间内是不能满足我们的需要的。所以我们有 O(1) 的计算方法。
通项公式:
\[F_n = \frac{(\frac{1+\sqrt5}{2})^n-(\frac{1-\sqrt5}{2})^n}{\sqrt5}
\]
可以了解一下生成函数和归纳法。
我们可以发现,这个公式分子第二项总小于 1 ,并且是以指数级的速度减小。所以我们可以吧公式写成
\[F_n = \bigg[\frac{(\frac{1+\sqrt5}{2})^n}{\sqrt5}\bigg]
\]
中括号表示取离他最近的整数
运用这两个式子进行计算时需要极高的精度,可以使用逆元来进行模意义下的运算。
卢卡斯数列通项公式
通项公式:
\[F_n = {(\frac{1+\sqrt5}{2})^n+(\frac{1-\sqrt5}{2})^n}
\]
与斐波那契通项公式联立
得:
\[\frac{\sqrt5F_n+L_n}{2} = (\frac{1+\sqrt5}{2})^n
\]