Sabotenderizer - 1 year ago 86

C# Question

This is what I have so far:

`namespace factorials`

{

class Program

{

static void Main(string[] args)

{

int number;

do

{

Console.WriteLine("What non-negative integer do you want to factorial?");

while (!int.TryParse(Console.ReadLine(), out number))

Console.WriteLine("Please enter a whole number only");

calculate(ref number);

} while (number >= 0);

Console.WriteLine("Please enter a non-negative number");

}

static void calculate(ref int number)

{

int factorial;

int counter;

for (counter = number; counter <= number; counter++)

{

factorial = number * number;

Console.WriteLine("The factorial of {0} is {1}", number, factorial);

}

}

}

}

Right now it just gives me the square of the numbers, not the factorial of them. How do I make it repeat the number of times as the input so it results in a factorial?

Also I am not sure if it's necessary to limit the program to non-negative integers only but if I want to that part is just ending the program right there instead of looping back to the beginning.

Recommended for you: Get network issues from **WhatsUp Gold**. **Not end users.**

Answer Source

Your loop assigns the square of the number to the result in a loop, and exits right away. You need to change it so that the result is repeatedly multiplied by numbers from 1 to N, inclusive.

Assign 1 to factorial, and multiply it by counter inthe loop:

```
factorial *= counter;
```

Don't forget to start your counter at 1.

Recommended from our users: **Dynamic Network Monitoring from WhatsUp Gold from IPSwitch**. ** Free Download**