while 循环中 n/2 的大 O 表示法

问题描述

我是数据结构和类似方面的新手。

我想问一个问题,我们如何确定这个过程的Big-O符号值:

while(n%2==0){
   console.log(2);
   n=n/2;
}

什么是大 O 符号?先谢谢了。

解决方法

如果 n 为奇数,则不执行循环。如果 n 是偶数,则它需要 log2n以 2 为底的对数)迭代,直到循环停止。它是 log2n,因为 n 在每次循环迭代 (i.e., n=n/2;) 时递减到一半。

假设 console.log(2); 花费 c 时间,整体复杂度将为 O(logn)