做用:求解递归算法的时间复杂度。html
把递归的函数调用过程,逐层分解画成图,其实就是一棵树。算法
以下是根据斐波那契数列的递推公式画的图:数组
如何用递归树求解时间复杂度呢?函数
总时间=全部层数消耗时间的和;cdn
若是每层消耗时间相同,那么O(n*h)。htm
若是每层消耗时间不一样,那么O(h1+h2+...)blog
练习:排序
每一层的操做就是:求分区点位置,分区。求分区点位置时间n,总的n。O(nh)。递归
那么如今求树高h也就是有多少层。get
O(nlogn)
F(1)=1,F(2)=1, F(n)=F(n-1)+F(n-2)(n>=3,n∈N*)
最短路径n、n-二、n-4....1 =n/2 最长路径n、n-一、n-2....1 =n
每层时间:每组加和时间的总和,加和时间1,组数=2^(h-1)。每层总时间是2^(h-1)。
若是路径长度n: