C# 연습 문제

Mr.Seo·2025년 12월 17일

C# 기초문법

목록 보기
11/15

C# 연습문제

1) 별 찍기

for (int i = 0; i < 5; i++)
{
    for (int j = 0; j <= i; j++)
    {
        Console.Write("*");
    }
    Console.WriteLine();
}

결과값


2) 팩토리얼 함수

  • 팩토리얼(Factorial)은 수학적 개념으로 n! 형태로 표기하며 1부터 n까지의 모든 양의 정수를 연속으로 곱한 값을 의미한다. (예: 4! = 4 x 3 x 2 x 1 = 24)
  • C#에서는 주로 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);
}
  • 풀이 : 일단 정해진 수만큼 반복적으로 곱하는걸 생각해보면 정수 n을 입력을 받는다고 했을때 5라고 한다면 일단 곱해질 대상인 정수값 ret = 1이 필요하고 for문을 입력받은 정수의 크기 만큼 돌면서 정수값 1에 계속 곱해준다. 지금은 5로 설정을 했으니 1 ~ 5까지 1의 값인 ret에 계속 적으로 곱해져서 위의 팩토리얼 형식이 만들어 지게 된다 그리고 그 곱해진 결과값 ret를 반환해주고 반환된 값을 콘솔창에 출력하면 120이라는 값을 얻을수 있게 된다.

3) 재귀 함수로 팩토리얼 구현

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이 출력되게 된다.

profile
프로그래머 취준생

0개의 댓글