Search code examples
c#asp.netloopsfor-loopfactorial

For loop to calculate factorials


Currently I have this set of code and its meant to calculate factorials.

int numberInt = int.Parse(factorialNumberTextBox.Text);

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

factorialAnswerTextBox.Text = numberInt.ToString();

For some reason it doesn't work and i have no clue why. For example i will input 3 and get the answer as -458131456 which seems really strange.

Any help appreciated. Thanks


Solution

  • int numberInt = int.Parse(factorialNumberTextBox.Text);
    int result = numberInt;
    
    for (int i = 1; i < numberInt; i++)
    {
        result = result * i;
    }
    
    factorialAnswerTextBox.Text = result.ToString();
    

    on a side note: this would normally NOT be the correct way to calculate factorials. You'll need a check on the input before you can begin calculation, in case your starting value is 1 or below, in that case you need to manually return 1.

    On another side note: this is also a perfect example of where recursive methods can be useful.

    int Factorial(int i)
    {
        if (i <= 1)
            return 1;
        return i * Factorial(i - 1);
    }