0

最近,我开始学习计数原始操作,从而估计程序的运行时间。但是,我在计算 for 循环的操作时发现了问题。说,for (int i=1; i<n; i++)

就个人而言,我认为(i = 1)1 次,(i < n)n 次,i++n-1,因此2n总共次。但是,有人告诉我,i++for times 只计算整个运行n-1的多少次。等于,我应该数次。i++i++i=i+12(n-1)

i++计算两次是否正确?++代表一个方法还是一个运算符?

4

6 回答 6

2

在这段代码中:

for (int i=1; i<n; i++)

增量块,这里是,i++在每次迭代结束时执行,所以它执行了 n-1 次。在第 (n-1) 次,终止条件为假,循环终止。

于 2013-10-22T14:41:52.103 回答
1

1: 你的循环是 n-1 次。这是因为它将为所有“i”运行:

[ 1, n ) == [ 1, n-1 ]

2: ++ 是运算符

于 2013-10-22T14:44:10.537 回答
0

让我们以不同的方式考虑 forloop:

for(A,B,C)也可以写成

A;
while(B){
...
C;
}

所以 A 是一次性初始化,在循环运行之前完成

B为条件,只要条件成立,循环继续

C 在每次迭代后完成,例如递增一个计数器,i++

在您的示例中,循环将运行 n-1 次 i 初始化为 1 在每个循环运行后递增 i

到第二部分: ++是一个运算符,不等于i=i+1;

i是递增的,但它返回原来的i,而不是递增的

++i确实等于i=i+1

于 2013-10-22T14:47:38.227 回答
0
for (int i=1; i<n; i++)

在这个块中,每次迭代都会调用 i++,并且这个代码块的检查语句是i<n一部分。所以它被执行 n 次,第 n 次它没有通过检查语句并终止

于 2013-10-22T14:48:36.497 回答
0

i++在java中称为一元运算符。但是你应该数两次。因为它-首先制作和添加-然后分配。

于 2013-10-22T15:02:27.637 回答
0

i++ 等于 i = i+1 所以

  1. 计算 i+1

  2. 将结果设置为 i

总共 2 步,但 2 只是一个常数,所以如果您使用大 O / Omega 表示法,这无关紧要

于 2013-10-22T14:45:01.463 回答