特定函数的 Big-Oh 和 theta 符号... 运行 时间

Big-Oh and theta notation of a specific function... Running time

如果计算 f(n) 是 theta(n)

i = 1;
sum = 0;
while (i <= n)
       do if (f(i) > k)
            then sum += f(i);
          i = 2*i;

这个 运行 的时间是 O(n^3),因为函数可能被调用了 n 次,还是 O(n)?或者它是关于 theta 的东西,因为这是我们知道的信息?我对此很迷茫...

i 变量每次加倍 => 将在 Log2(n)[=19= 中达到 n ] 时间。 f 的计算将进行 Log2(n) 次 => 函数时间复杂度为 O(N x LogN).

其实如果计算f(i)的复杂度为O(i),那么时间复杂度为:

1 + 2 + 4 + ... + 2^(Log2(n)) = n (there are Log2(n) steps) => O(n)