首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >测试循环在顶部还是底部?(while vs. while)

测试循环在顶部还是底部?(while vs. while)
EN

Stack Overflow用户
提问于 2008-10-22 00:29:15
回答 30查看 19.4K关注 0票数 26

当我在大学里学习计算机科学时(80年代中期),其中一个不断被重复的想法是总是编写循环,在顶部测试(虽然...)而不是在底部(做……while)的循环。这些概念经常得到参考研究的支持,这些研究表明,在顶部测试的循环在统计上比底部测试的对应物更有可能是正确的。

因此,我几乎总是编写在顶部测试的循环。如果它在代码中引入了额外的复杂性,我就不会这么做,但这种情况似乎很少见。我注意到一些程序员倾向于几乎完全编写在底部测试的循环。当我看到像这样的结构时:

代码语言:javascript
复制
if (condition)
{
    do
    {
       ...
    } while (same condition);
}

或者相反(while中的if),这让我怀疑他们是否真的是这样写的,或者当他们意识到循环不能处理null情况时,他们是否添加了if语句。

我做了一些谷歌搜索,但没有找到任何关于这个主题的文献。你们(和女孩们)是怎么写循环的?

EN

回答 30

Stack Overflow用户

发布于 2008-10-22 00:37:08

我总是遵循这样的规则:如果它应该运行零次或多次,则在开始时测试,如果它必须运行一次或多次,则在结束时测试。我看不到任何合理的理由来使用您在示例中列出的代码。这只会增加复杂性。

票数 78
EN

Stack Overflow用户

发布于 2010-06-23 00:17:13

如果要在循环的第一次迭代之前测试条件,请使用while循环。

如果要在运行循环的第一次迭代后测试条件,请使用do-while循环。

例如,如果您发现自己正在执行类似以下代码片段的操作:

代码语言:javascript
复制
func();
while (condition) {
   func();
}

//or:

while (true){
    func();
    if (!condition) break;
}

您应该将其重写为:

代码语言:javascript
复制
do{
    func();
} while(condition);
票数 57
EN

Stack Overflow用户

发布于 2008-12-24 01:51:37

不同之处在于,do循环执行"do某物“一次,然后检查条件以查看是否应该重复"do某物”,而while循环在执行任何操作之前检查条件。

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

https://stackoverflow.com/questions/224059

复制
相关文章

相似问题

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