1-1 n! 구하기 

문제설명

입력한 숫자의 팩토리얼을 재귀함수로 계산하는 프로그램을 작성하세요. 팩토리얼은 다음과 같이 계산합니다.

  • 5! = 5 × 4 × 3 × 2 × 1
  • 4! = 4 × 3 × 2 × 1

목표

  • 종료 조건과 재귀 호출을 직접 작성할 수 있다.
  • 재귀함수를 사용하여 반복되는 계산을 구현할 수 있다.

요구사항

  • n!을 구할 n값을 입력받으세요.
  • factorial() 함수를 재귀함수로 작성하세요.
  • 입력값이 1이면 1을 반환하세요.
  • 그렇지 않으면 자기 자신을 다시 호출하여 계산하세요.
  • main()에서 factorial(5)를 호출하여 결과를 출력하세요.

출력예시

n값을 입력하세요:5
120

 

코드예시

더보기
더보기
더보기
#include <stdio.h>

int factorial(int n) {
    if (n == 1) {
        return 1;
    }

    return n * factorial(n - 1);
}

int main() {
    int num, result ;

    printf("n값을 입력하세요:");
    scanf("%d", &num );
    
    result = factorial(num);
    printf("%d\n", result);

    return 0;
}

 

1-2. 1부터 n까지 합 구하기

 

문제설명

정수 n을 입력받아 1부터 n까지의 합을 재귀함수로 계산하는 프로그램을 작성하세요. 예를 들어 n이 5이면 다음과 같이 계산됩니다.

1 + 2 + 3 + 4 + 5 = 15


목표

  • 가장 기본적인 재귀함수를 직접 작성할 수 있다.
  • 종료 조건과 자기 자신을 다시 호출하는 구조를 이해한다.

요구사항

  • sum_recursive(int n) 함수를 작성하세요.
  • n이 1이면 1을 반환하세요.
  • 그렇지 않으면 n + sum_recursive(n - 1)을 반환하세요.
  • main()에서 sum_recursive(5)를 호출하여 결과를 출력하세요.

출력예시

정수를 입력하세요:5
15
 

 

코드예시

더보기
더보기
더보기
#include <stdio.h>

int sum_recursive(int n) {
    if (n == 1) {
        return 1;
    }

    return n + sum_recursive(n - 1);
}

int main() {
    int num;

    printf("정수를 입력하세요:");
    scanf("%d", &num);
    printf("%d\n", sum_recursive(num));

    return 0;
}

 

1-3. 숫자 역순 출력하기

 

문제설명

정수 n을 입력받아 n부터 1까지의 숫자를 재귀함수로 출력하는 프로그램을 작성하세요. 예를 들어 n이 5이면 다음과 같이 출력됩니다.

5 4 3 2 1
 

목표

  • 재귀함수에서 출력 위치에 따라 결과가 달라짐을 이해한다.
  • 반환값이 없는 void 재귀함수를 작성할 수 있다.

요구사항

  • print_reverse(int n) 함수를 작성하세요.
  • n이 0이면 함수를 종료하세요.
  • 그렇지 않으면 현재 숫자를 출력한 뒤 자기 자신을 호출하세요.
  • main()에서 print_reverse(5)를 호출하세요.

출력예시

정수를 입력하세요:6
6 5 4 3 2 1

 

코드예시

더보기
더보기
더보기
#include <stdio.h>

void print_reverse(int n) {
    if (n == 0) {
        return;
    }

    printf("%d ", n);
    print_reverse(n - 1);
}

int main() {
    int num;

    printf("정수를 입력하세요:");
    scanf("%d", &num);
    print_reverse(num);

    return 0;
}
 

+ Recent posts