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

嵌套循环时间复杂度求解:几何级数计算结果存疑

代码时间复杂度求解疑问

给定代码:

i = n;
while (i >= 1)
{ 
    for (k = 1; k <= i; k++) 
    {
       S;
    }
    i = i / 2;
}

其中S是不修改i、k或n的O(1)操作,求解这段代码的时间复杂度。

你的推导过程

  • 外层第一次迭代,内层循环执行n次
  • 第二次迭代,内层执行n/2次
  • 第三次迭代,内层执行n/4次
  • ...
  • 最后一次迭代,内层执行1次

你将求和式写为:$1+...+\frac{n}{8}+\frac{n}{4}+\frac{n}{2}+n$,并使用首项1、公比2、项数$\log n$的几何级数公式计算得到$S_n = n-1$,但对ChatGPT给出的约2n的结果存疑。

错误分析与正确推导

你的求和顺序不影响结果,但公式应用有误:

  • 正确的几何级数求和应该以首项n、公比1/2来计算,求和式为$n + \frac{n}{2} + \frac{n}{4} + ... + 1$
  • 根据几何级数求和公式$S = a_1 \cdot \frac{1 - r^m}{1 - r}$(其中$a_1$为首项,$r$为公比,$m$为项数):
    • 这里$a_1 = n$,$r = 1/2$,项数$m = \log_2 n + 1$(因为i从n降到1,每次除以2,共$\log_2 n +1$次迭代)
    • 代入公式得:$S = n \cdot \frac{1 - (1/2)^{\log_2 n +1}}{1 - 1/2} = n \cdot \frac{1 - 1/(2n)}{1/2} = 2n -1$
  • 忽略常数项后,时间复杂度为O(n),而ChatGPT给出的“约2n”是精确求和的结果,本质上和O(n)等价(时间复杂度只关注阶数,常数系数不影响)。

你之前误用了项数:如果以1为首项、2为公比求和,公式为$S = \frac{2^m -1}{2-1}$,其中$m = \log_2 n +1$,代入得$2^{\log_2 n +1} -1 = 2n -1$,和正确结果一致。你之前错误地将项数写成$\log n$,少算了一次迭代,导致结果偏差为$n-1$。

内容的提问来源于stack exchange,提问作者user2899944

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.09 19:31:02