【问题标题】:while and for loops no. of iterations knownwhile 和 for 循环没有。已知的迭代次数
【发布时间】:2020-07-18 23:20:39
【问题描述】:

我读到当迭代次数未知时使用while循环,而当迭代次数已知时使用for循环......例如当我必须打印一条语句5次时,我必须在两个while中初始化变量和for循环,我还需要在(i++)中给出迭代条件,我还必须提到迭代条件,以便它只循环5次......那么有什么区别?有人可以举个例子吗

for(int i=0;i<5;i++){
    cout<<"Hello";
    }
int i=0;
while(i<5){
    cout<<"hello";
    i++;
    }

【问题讨论】:

  • 你的例子很好。使用 for 循环,您可以将三行合二为一,同时区分三个部分:循环前块初始化、循环前检查和循环后更新。使用对您来说更清晰或更简单的。
  • “我读到当迭代次数未知时使用 while 循环,而当迭代次数已知时使用 for 循环” - 这完全是错误的。当你正在做的事情与 for 循环的形式相匹配时,你会使用 for 循环。否则,您使用 while 循环。

标签: c++ for-loop while-loop


【解决方案1】:

whilefor 之间没有真正的区别。

{
  int i = 0;
  while(i < 5){
    //stuff
    i++;
  }
}

一样
for(int i = 0; i < 5; i++){
   //stuff
}

但如您所见,当您有已知条件时,for 更易于使用。

例如,假设您正在运行的算法在列表为空且没有计数器变量(例如i)时结束。使用while 更容易理解:

while(!list.empty()){ /* stuff */ }

但是你可以用同样的方式使用for

for( ; !list.empty(); ){ /* stuff */ }

您可以根据每种情况或您的个人喜好,根据简单性和可读性选择其中一种。

【讨论】:

  • 我没有得到真正的“已知”条件,因为如果条件未知......两个循环不会无限迭代吗?编辑:所以没有大的区别......它只是关于用户可读性?
  • @Electrocuted 在循环开始之前就知道了
  • 一个未知的条件并不意味着它会永远循环,只是意味着你不知道那一刻的真正价值,但你知道它会结束一段时间。
【解决方案2】:

while 循环和for 循环都是预测试 循环,这意味着它会在每次迭代之前测试其表达式。 for 循环和while 循环的一个重要特征是,如果测试表达式一开始就为假,它将永远进行迭代。

现在您应该在任何需要初始化的情况下使用for 循环而不是while 循环,除非需要不同类型的初始化。

#include <iostream>

int main()
{
    for (int i = 0; i < 5; i++) {
        std::cout << "I am a for loop." << std::endl;;
    }
    int i = 0;
    while (i < 5) {
        std::cout << "I am a while loop" << std::endl;
        i++;
    }
}

我也建议你不要使用using namespace std;。你可以阅读更多关于它的信息Here

【讨论】:

    【解决方案3】:

    在为“for”循环编码时,首先应该知道迭代,因为它是在开始循环之前放置的,而在放置迭代之后是放置语句的; 同时,如果我们正在编写一个“while”循环,我们可以在循环内的任何地方放置 n 次迭代(在需要时)。 这就是为什么说当迭代次数已知时使用“for”循环,而当迭代次数未知时使用“while”循环。 尽管在编码之后,如果有人查看代码,似乎在这两种情况下迭代次数都是已知的;但是该语句是针对编码人员在执行代码时给出的。

    【讨论】:

      猜你喜欢
      • 2021-11-17
      • 1970-01-01
      • 1970-01-01
      • 2015-03-23
      • 2016-12-01
      • 2013-12-14
      • 1970-01-01
      • 2014-09-17
      • 2016-03-13
      相关资源
      最近更新 更多