Dab*_*lup 2 big-o time-complexity
int silly(int n, int m) {
if (n < 1) return m;
else if (n < 10)
return silly(n/2, m);
else
return silly(n - 2, m);
}
Run Code Online (Sandbox Code Playgroud)
这个算法是 O(log n) 还是 O(n) 的 Big-Oh 符号?
如果优化器真的很好,那就是 O(1)。该代码等效于简单的return m.
假设它是给定的,我们可以忽略if( n < 10 )条件,因为当 n 很小时,这是几次迭代。当 n 很大时,我们正在寻找最坏的情况。
剩下的就是递归到silly(n - 2, m)其中每隔一个整数倒计时。那是 n/2 次操作。我们删除常数使其成为 O(n)。