写在前面:递归是我最头痛的…我最喜欢的老师跟我讲,递归是种玄学。懂的人特别懂,不懂的人怎么都不懂。仿佛你的爱情哈哈哈哈。但我很懂爱情喔。此文参考《算法导论》。
求解递归式
递归式与分治算法密切相关。使用递归式可以很自然地刻画分治算法的运行时间。
求解递归式时间复杂度的方法:
① 代入法
我们猜测一个界,然后用数学归纳法证明这个界是正确的。(渐进界)
- 先对一个小值假设,然后推测更大的值正确性。
- 数学归纳法。猜测。
② 递归树法
将递归式转换为一棵树,其节点表示不同层次的递归调用产生的代价。然后采用边界和技术来求解递归式。
举个栗子:
T(n)=3T( └ n/4 ┘ )+Θ(n2)T(n)=3T(~└~ n/4 ~┘~)+Θ(n^2)T(n)=3T( └ n/4 ┘ )+Θ(n2)
- 抛去上下界函数影响
- 把Θ(nnn2)用cn2cn^2cn