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

复合循环迭代次数疑问:为何内层递减循环结果为250×499?

嵌套循环迭代次数的数学解释

先看你给出的两段代码,第一段两层循环都遍历500次,总次数是500×500=250000,这个逻辑很好理解。

第二段的内层循环j从i+1开始,我们拆解每次外层循环对应的内层执行次数:

  • 当i=0时,j要跑1到499,共499次
  • 当i=1时,j跑2到499,共498次
  • ...
  • 当i=498时,j只跑499,共1次
  • 当i=499时,j从500开始,不满足条件,0次

把这些次数加起来,就是求1+2+...+499的和(0可以忽略)。这里用等差数列求和公式:从1到n的连续整数和为n×(n+1)/2?不对,这里n是499,所以总和是499×500/2。计算时500除以2等于250,式子就变成了250×499,结果正好是124750,和代码运行结果一致。

换个实际场景的角度看,你要实现“两两比较一次不重复”,本质就是从500个元素里选2个不重复的组合,组合数公式是C(n,2) = n×(n-1)/2,代入n=500就是500×499/2=250×499,这和前面的求和结果完全对应——每一组(i,j)(i<j)正好对应一次比较,没有重复计算。

附上修正后的代码:

let num_1 = 0;

for(let i = 0; i < 500; i++){
    for(let j = 0; j < 500; j++){
       num_1++;
    }
}

console.log(num_1); // 500*500 = 250,000


let num_2 = 0;

for(let i = 0; i < 500; i++){
    for(let j = i+1; j < 500; j++){
        num_2++;
    }
}

console.log(num_2); // 250×499 = 124,750

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.16 14:45:41