Richard123m 2021-08-29 10:41 采纳率: 0%
浏览 18

以for写时间复杂度log的例子出现的问题

public class L1_logN {

    public static void main(String[] args) {

          logN(5);
    }


    private static void logN(int n){

        int count=0;  // 循环次数
        for(int i=1;i<=n;i*=2){
            count++;
        }

        System.out.format("当n=%d时,循环了 %d 次\n",n,count);

    }

}


**结果: **

n=1时,循环了 1 次
当n=2时,循环了 2 次
当n=100时,循环了 7 次

问题:
当n=1时, log2(1)不是等于0吗?
当n=2时, log2(2)不是等于1吗?

为什么上面的结果却不符,还是理解有误?

  • 写回答

3条回答 默认 最新

  • 英雄哪里出来 2021年博客之星Top1 2021-09-01 06:22
    关注
    • 当n = 1时, log2(1) 等于0,但是结果却为1
    • 当n = 2时, log2(2) 等于1,但是结果却为2
    • 当n = 4时, log2(4) 等于2,但是结果却为3
    • 当n = 8时, log2(8) 等于3,但是结果却为4
      ...

    所以你这里 i<=n 需要改为 i<n

    评论

报告相同问题?

问题事件

  • 创建了问题 8月29日