斐波那契数列可以派生出很多应用,其中,我们知道它的时间复杂性是指数级的,现在就来粗略地证明一下:
斐波那契数列递推式:
F(n)=F(n-1)+F(n-2)
F(1)=F(2)=1
粗略证明可以利用Decision_Tree,为了更直观,我引用另一个恒等函数 f(x)=0 ;x=1,2,3,4,5,............
所以斐波那契数列递推式变形如下:
F(n)=F(n-1)+F(n-2)+f(n)
F(1)=F(2)=1
画出Decision_Tree
// F(n)= f(n)
// / \
// f(n-1) f(n-2)
// / \ / \
// f(n-2) f(n-3) f(n-3 f(n-4)
// . . . .
// . . . f(2)
// / \ \
// f(1) f(2) 1
// / \ /\
// 1 1 1 1
因为f(n)恒等于0,所以F(n)等于叶子结点的总和乘以Theta(1).最长链路是最左子树,最短链路是最右子树。
所以有:2^(n/2)<F(n)<2^n,即F(n)=theta(2^n).
精确证明: