for (int i = 0; i < 5; i++)
{
for (int j = 0; j <= i; j++)
{
Console.Write("*");
}
Console.WriteLine();
}
결과값
1부터 n까지의 모든 양의 정수를 연속으로 곱한 값을 의미한다. (예: 4! = 4 x 3 x 2 x 1 = 24)for 반복문이나 재귀함수(Recursion)를 이용해 구현하며 숫자가 커질수록 결과값이 급격히 커지므로 데이터 타입 선택에 유의해야 한다.static int Factorial(int n)
{
int ret = 1;
for (int num = 1; num <= n; num++)
{
ret *= num;
}
return ret;
}
static void Main(string[] args)
{
int ret = Factorial(5);
Console.WriteLine(ret);
}
ret = 1이 필요하고 for문을 입력받은 정수의 크기 만큼 돌면서 정수값 1에 계속 곱해준다. 지금은 5로 설정을 했으니 1 ~ 5까지 1의 값인 ret에 계속 적으로 곱해져서 위의 팩토리얼 형식이 만들어 지게 된다 그리고 그 곱해진 결과값 ret를 반환해주고 반환된 값을 콘솔창에 출력하면 120이라는 값을 얻을수 있게 된다.static int Factorial(int n)
{
return n * Factorial(n -1);
}
static void Main(string[] args)
{
int ret = Factorial(5);
Console.WriteLine(ret);
}
위 예제는 for문으로 만든 공식과 유사하다. 입력받은 정수 n에다가 n - 1을 계속해서 곱해주면 for문으로 만든 팩토리얼 함수와 유사한 식이 된다. 하지만 실행해보면

위의 이미지처럼 StackOverflow 예외처리가 나오게 된다.
이유는 해당 값을 정확하게 지정해주고 재기적으로 하나씩 들어가서 계산을 해야하는데 지정한 값이 없이 계속해서 파고 들어가다보니 이런 에러가 나오는 것이다.
static int Factorial(int n)
{
if (n <= 1)
return 1;
return n * Factorial(n -1);
}
static void Main(string[] args)
{
int ret = Factorial(5);
Console.WriteLine(ret);
}
n의 값이 1보다 작거나 같으면 1을 반환해라 라고 지정해주게 되면 정상적으로 정수 5의 팩토리얼 적용 값인 120이 출력되게 된다.