Расчет факториала с использованием пользовательского ввода - консольное приложение - PullRequest
0 голосов
/ 20 сентября 2018

Отредактировано: на этот раз вставил правильный код ...

Я пытаюсь вычислить факториал числа.В этом примере я ввожу число 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 голосов
/ 20 сентября 2018

Проблема в том, что вы меняете 'consoleInput' в каждом цикле:

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

Теперь 'for' каждый раз проверяет новое значение.

Причина этогостановится отрицательным - это переполнениена каждом цикле.

...