【发布时间】:2015-08-14 08:37:41
【问题描述】:
考虑以下函数:
int testFunc(int n){
if(n < 3) return 0;
int num = 7;
for(int j = 1; j <= n; j *= 2) num++;
for(int k = n; k > 1; k--) num++;
return testFunc(n/3) + num;
}
我知道第一个循环是 O(logn),而第二个循环是 O(n),总时间复杂度是 O(n)。但是由于递归调用,我认为时间复杂度会是 O(nlogn),但显然它只是 O(n)。谁能解释一下为什么?
【问题讨论】:
标签: algorithm recursion time-complexity