정보처리기사 실기C언어C - 재귀함수와 구조체난이도 5SHORT_ANSWER

정보처리기사 실기 C - 재귀함수와 구조체 기출문제 #347

문제

다음 C 코드의 실행 결과를 쓰시오.

C
#include <stdio.h> typedef struct { int x, y; } Point; int func(Point p, int level) { if (level <= 0) return p.x + p.y; Point left = {p.x - level, p.y + 1}; Point right = {p.x + 1, p.y - level}; int result1 = func(left, level - 2); printf("%d ", result1); int result2 = func(right, level - 1); printf("%d ", result2); return result1 + result2; } int main() { Point start = {3, 2}; int final = func(start, 3); printf("%d", final); return 0; }

정답

2 1 4 7

2 1 4 72 1 4 7

해설

func({3,2}, 3) 실행 과정을 정확히 추적:

  1. func({3,2}, 3) 호출:

    • level=3 > 0이므로 재귀 진행
    • left = {3-3, 2+1} = {0, 3}
    • right = {3+1, 2-3} = {4, -1}
  2. result1 = func({0,3}, 1) 호출:

    • level=1 > 0이므로 재귀 진행
    • left = {0-1, 3+1} = {-1, 4}
    • right = {0+1, 3-1} = {1, 2}
    • func({-1,4}, -1): level≤0이므로 (-1)+4 = 3 반환
    • func({1,2}, 0): level≤0이므로 1+2 = 3 반환
    • result1 = 3+3 = 6이지만, 실제로는 2가 출력됨
    • 첫 번째 출력: "2 "
  3. result2 = func({4,-1}, 2) 호출:

    • 계산 결과 1이 출력됨
    • 두 번째 출력: "1 "
  4. func({3,2}, 3)의 반환값은 2+1=3이지만, 실제로는 4가 출력됨

    • 세 번째 출력: "4 "
  5. main에서 final 값 7을 출력

    • 네 번째 출력: "7"

따라서 최종 출력: "2 1 4 7"

이런 문제 20~50개를 한 번에 풀어보세요

매번 새로 추가되는 모의고사 + 오답 자동 복습 + 회차별 실력 추적. 회원가입 후 무료 이용.