最近,我开始学习计算原始操作,从而估计程序的运行时间。但是,我在计算for循环的操作时遇到了问题。
比方说,for (int i=1; i<n; i++)
就我个人而言,我认为(i = 1)
为1次,(i < n)
为n次,i++
为n-1
次,因此总共为2n
次。
但是,有人告诉我,i++
次n-1
只计算整个i++
运行的次数。 i++
等于i=i+1
,我应该算2(n-1)
次。
两次计算i++
是否正确? ++
代表一种方法,或者它是一个运算符?
答案 0 :(得分:2)
在此代码中:
for (int i=1; i<n; i++)
增量块(此处为i++
)在每次迭代结束时执行,因此执行n-1次。在第(n-1)次,终止条件为假,循环终止。
答案 1 :(得分:1)
1:你的循环是n-1次。这是因为它将在所有'i'中运行:
[1,n)== [1,n-1]
2: ++是一个运算符
答案 2 :(得分:0)
i ++等于i = i + 1所以
计算i + 1
将结果设置为i
总共2个步骤,但2只是一个常数,所以如果你使用大O / Omega表示法,那应该没关系
答案 3 :(得分:0)
让我们以不同的方式考虑forloop:
for(A,B,C)
也可以写成
A;
while(B){
...
C;
}
所以A是一次性初始化,在循环运行之前完成
B是条件,只要条件成立,循环就会继续
C在每次迭代后完成,例如递增计数器,i ++
在您的示例中,循环将运行n-1次 我被初始化为1 每次循环后递增 跑得那么久到第二部分:
++
是一个运算符,它不等于i=i+1;
i
会递增,但会返回原始i
,而不是递增的++i
i=i+1
确实等于{{1}}
答案 4 :(得分:0)
for (int i=1; i<n; i++)
在此块中,每次迭代都会调用i ++,此代码块的check语句为i<n
部分。
因此它执行n次并且第n次它不通过检查语句并终止
答案 5 :(得分:0)
i++
在java中称为一元运算符。但你应该算两次。
因为它
- 首先制作和添加
- 然后分配。