求给定嵌套for循环中内层循环的总执行次数(需用n和k表示)
内层for循环执行次数计算
先贴出你给出的代码:
for(i=1, count=0;i<=n;i=i+k) for(j=1;j<=k;j++) count++;
推导过程
- 首先计算外层循环的执行次数:外层循环的i从1开始,每次步进k,只要取值不大于n就会执行,所以执行次数为
⌈n/k⌉(即n除以k的结果向上取整),等价于整数运算场景下的(n + k - 1) // k。 - 每次外层循环运行时,内层循环固定从j=1执行到j=k,共执行k次,内层的执行次数和i、n的取值没有关联。
- 内层循环总执行次数 = 外层循环次数 × 单次外层循环对应的内层执行次数 =
k * ⌈n/k⌉
分情况写法与验证
你也可以按整除情况拆分表达:
- 当n是k的整数倍时,内层总执行次数为n
- 当n不是k的整数倍时,内层总执行次数为
k * (n//k + 1)(//代表向下取整的整数除法)
验证示例:取n=7、k=3,按公式计算得3 * ⌈7/3⌉ = 3*3=9;实际运行时外层i的取值为1、4、7共3次,每次内层跑3次,总执行次数为9,和计算结果一致。
内容的提问来源于stack exchange,提问作者Ayazzia01
相关产品推荐
相关产品推荐

