代码:
i=1; ①
while (i<=n)
i=i*2; ②
上面是别人的代码,这里举一个例子
由于 i 作为判断条件,并且执行语句也有 i 所以大家可以举一个例子理解一下,执行一次i=2(2^ 1),执行两次i=4(2^ 2),执行3次,i=8(2^3),…;假设执行了m次,注意并不是执行n次,我之前老是认为执行n次,大错特错了。所以得到一个公式 2 ^ m<=n, 同时取对数,ln(2 ^ m)<=ln(n),那么就需要将底为e转换到标准的底为10 的对数下面,得到m<=log2n (注意此对数log是以10为底的对数),
以上就是个人理解了~~,有更好的想法欢迎指点小弟~~
本文解析了一个典型的指数级增长的代码片段,通过分析i=i*2的循环,揭示了其执行次数与n的关系,得出了执行次数m与n的对数关系公式,即m≤log2n,帮助读者深入理解代码复杂度。
的个人理解&spm=1001.2101.3001.5002&articleId=107759029&d=1&t=3&u=5e9a0f909dda467595805463fa3ddd94)
931

被折叠的 条评论
为什么被折叠?



