language-agnostic - 测试循环在顶部还是底部? (while vs. do while)

标签 language-agnostic loops while-loop do-while

就目前而言,这个问题不适合我们的问答形式。我们希望答案得到事实、引用或专业知识的支持,但这个问题可能会引起辩论、争论、投票或扩展讨论。如果您觉得这个问题可以改进并可能重新打开,visit the help center为指导。




8年前关闭。




当我在大学(80 年代中期)学习 CS 时,不断重复的想法之一是始终编写在顶部(while...)而不是底部(do...while)进行测试的循环环形。这些观点经常得到引用研究的支持,这些研究表明,在顶部测试的循环在统计上比在底部测试的循环更可能是正确的。

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

if (condition)
{
    do
    {
       ...
    } while (same condition);
}

或相反的( if 中的 while ),这让我想知道他们是否真的是这样写的,或者他们是否添加了 if当他们意识到循环没有处理空情况时的语句。

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

最佳答案

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

关于language-agnostic - 测试循环在顶部还是底部? (while vs. do while),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/224059/

相关文章:

python - 我如何理解编码错误的消息?

java - 从数据库生成直方图

oop - OOP 中的主要概念

c# - 为什么是 i++ "unreachable code"?

python - 根据行数循环 Python 脚本

javascript - 在对象中按名称查找嵌套属性的最佳方法

c - 使用 while 和 do-while 循环在 C 中输出简单的猜数游戏

numbers - 将单词转换为数字

java - 而 nextLine() 不等于 ""

java - 将局部变量中的动态 int 值存储到静态?