You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

《Head First C#》循环执行次数存疑:为何未陷入死循环?

循环终止性分析

根据你描述的逻辑,你的判断是正确的——按照你说的代码执行流程,这个循环确实会无限运行:

  • 初始p == q,while (p < q)条件不成立,直接跳过该块
  • 执行q = p - q后,q变为0
  • 后续for循环里q = q * 2的操作只会让q保持0,while (p < q)的条件永远无法触发(这类示例里p通常是正整数),导致外层循环没有终止条件,进入无限循环。

书中说运行8次,大概率是你误读了代码的初始值或结构细节:

  • 比如初始时p和q并非相等(比如常见的p=8、q=1)
  • 或者q = p - q的位置是在while循环内部,而非外部

举个符合“运行8次”结论的典型代码示例:

int p = 8;
int q = 1;
while (p > 0)
{
    while (p < q)
    {
        q = q - p;
    }
    p = p - q;
    q = q * 2;
}

这段代码会在执行8次外层循环后终止,因为每次循环p会逐步递减至0。

建议你重新核对书中的完整代码片段,重点确认初始变量赋值、循环嵌套关系以及语句执行顺序,应该是细节理解上出现了偏差。

内容的提问来源于stack exchange,提问作者Dredin 47

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.07 16:32:23