我不能使用任何其他数学符号而不是++ - > < =我无法弄清楚为什么这是一个无限循环。
while (d < n)
{
System.out.print(d + " ");
for (count = 0 ; count < d ; count++)
{
d++;
}
for (count = d; count > 0; count--)
{
}
}
答案 0 :(得分:5)
假设d
和n
都是int
类型,并且外部循环实际上是迭代的。
案例1 - 如果d
最初为零或为负,则for
循环都不会迭代。因此,d
永远不会改变,因此d < n
无法停止生效。因此while
循环将永远不会结束。
案例2 - 如果d
为正,那么在while
循环的第一次迭代中,第一个for
循环会同时增加count
和d
同时。 for
条件将继续运行,直到d
达到整数溢出并变为Integer.MIN_VALUE
。然后退出for
循环。但是,while
循环的第二次迭代就像情况1一样 - 它不会结束。
答案 1 :(得分:0)
因为你在循环中改变了d ..因为d总是在增加你永远不会逃避循环
答案 2 :(得分:0)
虽然阻止但
没有问题for (count = 0 ; count < d ; count++)
{
d++;
}
这个for
块很糟糕。如果d
已经大于count
,则它变为无限循环。比如d = 2,count = 0。第二个循环d=3
,count=1
。第三个循环d=4
,count=2
,它继续这样。