Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

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

like image 689
Anthony Johnson Avatar asked May 16 '13 09:05

Anthony Johnson


People also ask

How do you calculate factorials?

In more mathematical terms, the factorial of a number (n!) is equal to n(n-1). For example, if you want to calculate the factorial for four, you would write: 4! = 4 x 3 x 2 x 1 = 24.


1 Answers

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);
}
like image 150
Wim Ombelets Avatar answered Oct 18 '22 02:10

Wim Ombelets