코딩일기/자격증

[정보처리기사] 재귀함수 | 2022년 정보처리기사 실기

jhy_2023 2024. 7. 22. 09:29
728x90
반응형

1. 다음 소스코드에서 입력값이 5가 들어왔을 때 출력되는 값을 작성하시오.

#include <stdio.h>
int func(int a) {
  if (a <= 1) return 1;
  return a * func(a - 1);
}

int main() {
  int a;
  scanf("%d", &a);
  printf("%d", func(a));
}

답 : 120

728x90
  1. main 함수:
    • 사용자로부터 정수 a를 입력받습니다. 여기서는 a = 5입니다.
    • printf("%d", func(a));를 호출하여 func(5)의 결과를 출력합니다.
  2. func 함수:
    • func(5) 호출:
      • a가 1보다 크므로 5 * func(4)를 계산합니다.
    • func(4) 호출:
      • a가 1보다 크므로 4 * func(3)를 계산합니다.
    • func(3) 호출:
      • a가 1보다 크므로 3 * func(2)를 계산합니다.
    • func(2) 호출:
      • a가 1보다 크므로 2 * func(1)를 계산합니다.
    • func(1) 호출:
      • a가 1이므로 1을 반환합니다.
  3. 재귀 호출의 반환 과정:
    • func(1)은 1을 반환합니다.
    • func(2)는 2 * 1 = 2를 반환합니다.
    • func(3)는 3 * 2 = 6을 반환합니다.
    • func(4)는 4 * 6 = 24를 반환합니다.
    • func(5)는 5 * 24 = 120을 반환합니다.
  4. 최종 출력:
    • main 함수는 printf를 통해 func(5)의 결과인 120을 출력합니다.

따라서, 입력값이 5일 때 프로그램의 출력값은 120입니다.


"이 포스팅은 쿠팡 파트너스 활동의 일환으로, 이에 따른 일정액의 수수료를 제공받습니다."

728x90
반응형