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

评估算法运行时时,循环中的不等号是否会产生影响?

分析foo1与foo2的运行结果差异

先把两个函数的代码清晰展示出来:

int foo1(int n) { 
    int i, j, x = 0; 
    for (i = 1; i <= n; i++) 
        for (j = 1; j <= n; j++) 
            x++; 
    return x; 
} 

int foo2(int n) { 
    int i, j, x = 0; 
    for (i = 1; i < n; i++) 
        for (j = 1; j < n; j++) 
            x++; 
    return x; 
}

核心差异就是两个嵌套循环里的不等号类型,直接决定了循环的执行次数,进而影响最终返回的x值:

  • foo1的运行逻辑:
    外层循环i从1开始,直到i <= n才停止,所以会完整执行n次(i=1,2,...,n)。每一次外层循环,内层循环j同样从1到n执行n次。最终x的累加次数是n * n,也就是返回值为n²。

  • foo2的运行逻辑:
    外层循环i从1开始,当i < n时才继续,所以只会执行n-1次(i=1,2,...,n-1)。内层循环同理,j也只执行n-1次。最终x的累加次数是(n-1) * (n-1),返回值为(n-1)²。

举个具体例子直观感受:当n=5时,foo1返回25,foo2返回16,两者的差值是25-16=9,刚好等于2*5-1(这是n² - (n-1)²的展开结果)。

简单来说,foo1比foo2多执行了「外层循环的最后一次(i=n)」以及「每一轮外层循环里j=n的那次内层循环」,这些额外的执行次数直接导致了返回值的差异。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.29 07:40:04