我很难理解以下内容:
考虑这个循环:
for (j=1;j<n;j++)
//j=1 will run once
//j<n will run n-1+1 = n times
//j++ will run n-1 times (one less than the conditional statement above)现在考虑以下内容:
for (j=3;j<=n;j++)
//j=3 will run once
//j<=n will run n-3+2 = n-1 times现在,我会说j++将运行n-2次,但根据我的课堂讲稿,它将运行2(n-2)次。
我不明白这有什么意义,例如,如果n= 5,循环将检查j<=n 4次,但只会递增3次。根据注解,它会增加6倍?
发布于 2013-03-20 16:06:22
for (j=1;j<n;j++)等同于(在C中)
j = 1;
while (j < n) {
...
j++;
}尝试使用较小的j值,例如2:测试j < 2 2次(n),测试j++ 1次(n-1)。
在第二种情况下
for (j=3;j<=n;j++)对于n = 4,j<=n测试3次(n-1),j++测试2次(n-1),而不是2次(n-2)。实际上,你可以说,只有当条件为真时,j++才会被执行,也就是说,条件被测试的次数减1(前提是在C和其他类似语言中,循环之前没有中断)。
两个示例之间的差异是j<n与j<=n:在C中,您可以翻译(用于整数比较)
j <= n至
j < n+1这可能有助于理解发生了什么。
发布于 2013-03-20 16:05:51
对于第一个示例(假设n个>=为1),j<n的计数应该只有n。
对于第二个示例(假设n个>=为2),j<=n的计数是n-1,j++的计数是n-2。
你的理解是正确的,这在课堂讲稿中是错误的。
https://stackoverflow.com/questions/15518069
复制相似问题