首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >for循环的频率计数

for循环的频率计数
EN

Stack Overflow用户
提问于 2013-03-20 15:53:21
回答 2查看 6.4K关注 0票数 2

我很难理解以下内容:

考虑这个循环:

代码语言:javascript
复制
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)

现在考虑以下内容:

代码语言:javascript
复制
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倍?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-03-20 16:06:22

代码语言:javascript
复制
for (j=1;j<n;j++)

等同于(在C中)

代码语言:javascript
复制
j = 1;
while (j < n) {
   ...
   j++;
}

尝试使用较小的j值,例如2:测试j < 2 2次(n),测试j++ 1次(n-1)。

在第二种情况下

代码语言:javascript
复制
for (j=3;j<=n;j++)

对于n = 4j<=n测试3次(n-1),j++测试2次(n-1),而不是2次(n-2)。实际上,你可以说,只有当条件为真时,j++才会被执行,也就是说,条件被测试的次数减1(前提是在C和其他类似语言中,循环之前没有中断)。

两个示例之间的差异是j<nj<=n:在C中,您可以翻译(用于整数比较)

代码语言:javascript
复制
j <= n

代码语言:javascript
复制
j < n+1

这可能有助于理解发生了什么。

票数 2
EN

Stack Overflow用户

发布于 2013-03-20 16:05:51

对于第一个示例(假设n个>=为1),j<n的计数应该只有n。

对于第二个示例(假设n个>=为2),j<=n的计数是n-1,j++的计数是n-2。

你的理解是正确的,这在课堂讲稿中是错误的。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15518069

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档