版权声明:欢迎转载,但请注明出处,若有什么不对的地方,欢迎指正,https://blog.csdn.net/wutenglong123/article/details/82764585
斐波那契数列(Fibonacci sequence)
斐波那契数列的性质多种多样,截至现在,人么依然没有将之研究透彻,本文就从中选取几个有趣的性质分析。
定义
Fib数列的定义如下:
F ( n ) = { 0 i f n = 0 1 i f n = 1 F n − 1 + F n − 2 i f n ≥ 2 F(n)=\left\{ \begin{aligned} &0 &if\ n=0 \\ &1 &if \ n =1 \\ &F_{n-1}+F_{n-2} &if \ n\ge 2 \end{aligned} \right. F(n)=⎩⎪⎨⎪⎧01Fn−1+Fn−2if n=0if n=1if n≥2
1、递归求解Fib:
class solution{
public:
int fib(int n){
if(n == 1)return 0;
if(n == 2)return 1;
else return fib(n-1)+fib(n-2);
}
时间复杂度分析:
我们先给出时间复杂度,然后证明。
由递推式:
F n = F n − 1 + F n − 2 F_n = F_{n-1}+F_{n-2} Fn=Fn−1+Fn−2
则有:
O ( n ) = Ω ( φ n ) O(n) =\Omega(\varphi^n) O(n)=Ω(φn)
其中
φ = 1 + 5 2 \varphi =\frac{1+\sqrt5}{2} φ=21+5(Golden section
)
证明如下:
由初始条件解二阶齐次差分方程:
F n = F n − 1 + F n − 2 F_n = F_{n-1}+F_{n-2} Fn=Fn−1+Fn−2 得 λ 2 − λ − 1 = 0 \lambda^2-\lambda-1=0 λ2−<