代码之家  ›  专栏  ›  技术社区  ›  Lee Jaedong

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

  •  1
  • Lee Jaedong  · 技术社区  · 6 年前

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

    我想计算一个数的阶乘。在这个例子中,我输入数字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 回复  |  直到 6 年前
        1
  •  5
  •   Poul Bak    6 年前

    consoleInput

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

    现在是 for

    :

    它变大的原因是循环“永不”结束,因为您检查的值在每个循环上都会增长。