1.定义及递推公式
斐波那契数列(Fibonacci sequence),又称黄金分割数列,因数学家Leonardoda Fibonacci以兔子繁殖为例子而引入,故又称兔子数列。
1,1,2,3,5,8,13…
即:f(1) = 1,f(2) = 1,f(3) = 2,f(4) = 3…
添加0项后,Fibonacci数列归纳如下:
f(n) = f(n-1) + f(n-2), n >= 2;
f(0) = 0;
f(1) = 1;
2.通项公式
3.方法一:递归求解(时间复杂度O(2^n))long fibonacci(unsigned n)
{
if (n < 2) return n;
return fibonacci(n-1) + fibonacci(n-2);
}
时间复杂度分析:可以看到,递归解法存在大量的重复计算。
求f(n)的过程可以用一颗二叉树表示,树中的每个节点就代表一次基本计算.
易知,树的高度为n,一棵高度为n的满二叉树的节点个数为2^n-1,当然,上图中的树肯定不是满二叉树,但也可以看出来,该树的节点个数
大于满二叉树节点数的一半,即(2^n-1)/2。设计算次数为T(n),可知(2^n-1)/2 < T(n) <