使用用户输入来计算阶乘-控制台应用程序

时间:2018-09-20 19:14:36

标签: c# console-application calculation

编辑:这次粘贴了正确的代码...

我正在尝试计算数字的阶乘。在此示例中,我输入数字5。

尝试此方法会给我带来巨大的负数:

 static void Main(string[] args)
    {
        int consoleInput = int.Parse(Console.ReadLine());            

        for (int i = 1; i < consoleInput; i++)
        {
            consoleInput = consoleInput * i;
        }

        Console.WriteLine(consoleInput);
    }

输出-1899959296

但是:

 static void Main(string[] args)
    {
        int consoleInput = int.Parse(Console.ReadLine());
        int result = consoleInput;

        for (int i = 1; i < consoleInput; i++)
        {
            result = result * i;
        }

        Console.WriteLine(result);
    }

输出120

如果两次都输入5,则第一次输出为-1899959296,第二次输出为120。

有人可以解释为什么吗?

1 个答案:

答案 0 :(得分:5)

问题是您在每个循环中都更改了“ consoleInput”:

for (int i = 1; i < consoleInput; i++)
        {
            consoleInput = consoleInput * i;
        }

现在,“ for”每次都会检查一个新值。

它变为负数的原因是溢出条件。

修改

之所以如此之大,是因为循环“永无止境”,因为您检查的值在每个循环中都会增加。