C 为什么这个算法是O(N)?

C 为什么这个算法是O(N)?,c,algorithm,big-o,C,Algorithm,Big O,下面的C代码显然是O(N)(根据我的实践考试)。然而,我不确定为什么它是O(N)而不是O(某物*某物) void doit(int N){ while(N){ 对于(int j=0;j

下面的C代码显然是O(N)(根据我的实践考试)。然而,我不确定为什么它是O(N)而不是O(某物*某物)

void doit(int N){
while(N){
对于(int j=0;j
有人愿意给我一些关于这个问题的见解吗


提前谢谢

因为N+N/2+N/4+…=2N.

非常感谢!应该注意的一系列haha@user2109258这实际上是一个著名的系列,想想一个男人和他的狗,他们一起去同一个地方,狗的移动速度是男人的两倍,所以当狗到达目标时,他回到男人身边,当狗回到男人身边时,他回到他们的目标身边,依此类推,在这个人到达目标之前,问题是狗的总行程是多少?
void doit(int N) {
    while (N) {
        for (int j = 0; j < N; j += 1) {
        }
        N = N / 2;  
    }
}