递归
最后更新于
这有帮助吗?
递归行为本质上就是基于系统栈的,所有的递归都可以改为迭代。有如下代码,寻找数组 arr[L, R]
范围内的最大值,使用递归完成:
每执行一次就压入系统栈,每次执行结束出栈,如此循环。
Master公式是用来解决递归问题时间复杂度的公式。记录主方法的表现形式:
上述排序arr的代码符合master公式,他的时间复杂度公式为:
如果递归满足Master公式,那么时间复杂度为:
如果logbA
> d
,那么时间复杂度为 O(N^(logbA))
如果logbA
< d
,那么时间复杂度为 O(N^d)
如果logbA
==d
,那么时间复杂度为O(N^d * logN)
这里 a = 2
, b = 2
,d = 0
,其 logbA = 1
,所以 logbA > d
,故上述代码的时间复杂度为 O(N^(logbA))
,即O(N)