【问题标题】:For Loop ConstructsFor 循环结构
【发布时间】:2012-05-07 02:39:56
【问题描述】:

这个循环会准确执行N Times吗?

for (int i = 0; i < N; i++) 
{
    //statement
    someMethodCall();
}

这个循环最多会执行N次吗?

for (int i = 1; i < N; i++)  
{
    someMethodCall();
}

这个循环至少会执行N 次吗?

for (int i = 0; i <= N; i++) 
{
    //statement
    someMethodCall();
}

如果我需要在mn之间执行语句,我该怎么办,例如调用方法?

【问题讨论】:

  • “至少”或“最多”是什么意思? for 循环被设计为在该格式下经过特定次数。循环中的break 会提前退出,并且以不同的方式对其进行格式化会对迭代产生各种影响(例如通过容器)。
  • 也许吧。在所有情况下,这取决于someMethodCall() 是否可以修改N

标签: c# c++


【解决方案1】:

你的三个问题的答案是肯定的,不是的,我想是的,虽然第三个答案有点欺骗性;它会执行 N 次,不多也不少(除非有异常终止循环。)你可以编写一个 for 循环来循环一定次数,或者直到某个条件成立,然后你有能够使用breakreturn 提前终止循环。

但是没有执行“至少 N 次”的概念;它根本不是这种——或任何其他——计算机语言的一部分。

【讨论】:

  • 嗯,毫无疑问,循环将执行多少次,但我认为如果您忽略“至少”和“最多”的可怕用法,所有三个陈述都是正确的。跨度>
  • @SethCarnegie -- 不过,中间的会执行 N-1 次,所以“最多 N”肯定是错误的,你不是说吗?
  • 不,'最多 N' 似乎是正确的。它不会运行超过 N。(是的,“至多”意味着一些愚蠢的不确定性。)
  • @chris:at most 并不是说​​它必须运行N次,它可以运行0次并且声明是正确的。
  • 这是一场有趣的辩论,伙计们,但老实说,我认为发帖者对循环限制中的不确定性有一些奇怪的错觉,我认为消除这些误解是这里最重要的事情。
【解决方案2】:

一个循环公式可以计算为

Math.Round (condition - initialization )/increment

在第一种情况下它的

(N-0)/1 which evaluates to N times

第二种情况

(N-1)/1 which evaluates to N-1 times

第三种情况

(N-0+1)/1 which evaluates to N+1 times

How would I do if I need to execute statement between m and n times? For instance I want to call one method between m and n times?

然后检查它的条件

for (int i = m; i < n; i++)
{
    someMethodCall();
}

【讨论】:

    【解决方案3】:

    在for循环中你可以有这些代码,

    N次

    for (int i = 0; i < N; i++) {
    
    }
    

    N+1 次

    for (int i = 0; i <= N; i++) {
    
    }
    

    如果没有时间,你想自己处理,你可以使用这个,

    for (;;) {
       //do something and don't forget use break or return !         
    }
    

    while(x>10){    
    
    }
    

    正如欧内斯特·弗里德曼-希尔所说,循环中的循环很好

    for (int i = 0; i <=10; i++) {
        for (int i = 0; i < length; i++) {
    
        }
    }
    

    使用 2xTab 获取 Visual Studio 帮助。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-03-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多