黑马程序员技术交流社区

标题: 昨天看到的一个程序,求教 [打印本页]

作者: 刘欢(安阳)    时间: 2012-10-4 08:54
标题: 昨天看到的一个程序,求教
昨天看到的一个程序,可是不输出,求教?


int sum = 1;
for (int i = 3; i <= 19; i = i + 2)
{
while (i > 0)
{ i = i * (--i); }
sum = sum + i;
}
Console.WriteLine("{0}",sum);
Console.ReadKey();
作者: 李玉生    时间: 2012-10-4 09:01
        int sum = 1;
for (int i = 3; i <= 19; i = i + 2)
{
while (i > 0)
{ i = i * (--i); }
   sum += i;
}
Console.WriteLine("{0}",sum);
Console.ReadKey();
这样就能输出了,哈哈{:soso_e113:}
作者: 杨进    时间: 2012-10-4 09:09
while (i > 0)
{ i = i * (--i); }
这是一个死循环,走不出来的
作者: 陈顺亮    时间: 2012-10-4 09:26
死循环,走不到Console.ReadLine();这一步
作者: 许波    时间: 2012-10-4 10:29
i>0?? i的初始值就大于0,虽然相乘完自减,但是运算后的i的值很大,自减1的话是走不出循环的
作者: 赵雅晴    时间: 2012-10-4 10:53
因为for循环里i 的值是大于等于3的,这样的话while的条件语句就永远成立,就成了死循环了
作者: 和志强    时间: 2012-10-4 11:06
while (i > 0)
{ i = i * (--i); }
是个死循环了
作者: 何学强    时间: 2012-10-4 12:17
在for循环中i的值是大于等于3,所以在while循环里i的值永远不会小于0,
while (i > 0)
{ i = i * (--i); }
死循环
作者: 邓艳秋    时间: 2012-10-4 12:48
死循环了呀。自减1和相乘相差很大的,这样自减1永远也减不到尽头哇。。。
作者: 蔡嘉    时间: 2012-10-14 09:44
调试后发现,确实应该出不去while循环,但是狂按f11后,发现 i 好像溢出了,跳出了while循环,奇怪的是,溢出后的i又跑到了while循环里,最后,程序被按死了!
另外,发现程序未按照良好的编程习惯编写,while的右边括号未和左边括号对齐,写在了行尾!误导!

QQ截图20121014093352.png (13.39 KB, 下载次数: 61)

QQ截图20121014093352.png

作者: 黑马杨锦喜    时间: 2012-10-16 01:29
楼主,此题还没解决么?
在for循环中i的值是大于等于3,所以在while循环里i的值: i = i * (--i); 是永远不会小于0的,
while (i > 0)
{ i = i * (--i); }
死循环




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2