Skip to content

死循环

快速摘要

循环的退出条件永远不会满足,导致程序卡在循环里出不来,最终卡死或被强制终止。

为什么发生

  • 循环变量没有正确更新,条件永远为真

  • 循环条件写错,例如 while (i > 0)i 一直在增大

  • 浮点数累加误差导致条件永远达不到

最小示例

✗ 错误代码
let i = 0;
while (i < 10) {
  console.log(i);
  // 忘了 i++
}
✓ 修复代码
let i = 0;
while (i < 10) {
  console.log(i);
  i++;
}

循环体里忘了 i++i 永远是 0,条件 i < 10 永远为真。补上 i++ 即可。

如何诊断

  • 程序卡住或超时,怀疑是死循环

  • 在循环体内打印循环变量,观察它是否在向退出条件靠近

  • 检查循环条件和循环变量的更新语句是否正确

如何修复

  • 确保循环变量在每次迭代中都向退出条件变化

  • 修正循环条件,使其能在某个时刻变为假

  • 作为兜底,加入最大迭代次数限制并主动 break

如何预防

  • 写循环时先想清楚退出条件,再写循环体

  • 对不确定的循环加最大迭代次数保护

相关资源

相关术语

相关课程

  • 循环

    了解循环的执行原理和退出条件

相关练习

← 返回语言