递归问题的时间复杂度分析
递归分析
递归问题可分为以下三个步骤分析:
1、递归函数功能
2、递归终止条件
3、递归关系式
//n! |
递归问题能找到递归关系式的,是否都能用动态规划的思想去解决?
目前没遇到无法用动态规划去改写的问题。通常递归问题的时间复杂度都比较高。
递归的时间复杂度
master公式的使用:
T(n)=a*T(n/b)+O(n^d)
log(b,a)>d->复杂度为O(n^log(b,a))
log(b,a)=d->复杂度为O(n^d*logn)
log(b,a)>d->复杂度为O(n^d)
推导如下:
n级台阶的问题时间复杂度分析
该时间复杂度是一个指数复杂度。很多时候递归的时间复杂度都很高,所以可以用动态规划来改写。
int climbStairs(int n) { |