You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

算法复杂度咨询:嵌套While循环的时间复杂度推导是否正确?

算法复杂度分析与推导验证

首先看你给出的代码:

m = 12
while m>0:
  n = 0
  while n<m:
     n+=1 
  m/=3

你的推导结果是错误的,下面是正确的复杂度分析:

  • 外层循环轮数:初始m为N(这里N=12),每轮m变为原来的1/3,直到m趋近于0。循环轮数是log₃N级别的(渐近复杂度只看主导项,后续处理小数m的循环可忽略)。
  • 每轮内层循环执行次数:第一轮是N次,第二轮是N/3次,第三轮是N/9次……最后几轮当m小于1时,内层执行1次。

总执行次数是首项为N、公比为1/3的等比数列求和:
$$N + \frac{N}{3} + \frac{N}{9} + \frac{N}{27} + ...$$

根据等比数列求和公式,无穷项的和为 $\frac{N}{1 - \frac{1}{3}} = \frac{3}{2}N$,这是线性规模的结果,因此该算法的时间复杂度是O(N)(N为初始m的值)。

你推导的错误在于,错误地将每轮内层循环的次数都等同于N+1,再乘以循环轮数log₃N。但实际内层循环次数是逐次按1/3比例递减的,并非始终保持与初始N同规模的次数。

内容的提问来源于stack exchange,提问作者Francisco Minchala Fajardo

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.07 07:50:18