정보처리기사 실기C언어C - 이중 재귀 트레이싱난이도 2SHORT_ANSWER

정보처리기사 실기 C - 이중 재귀 트레이싱 기출문제 #599

문제

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

C
#include <stdio.h> int calculate(int value) { if (value <= 1) { printf("%d ", value); return value; } int left = calculate(value / 2); printf("%d ", value); int right = calculate(value - 2); return left + right; } int main() { calculate(5); return 0; }

정답

1 2 0 5 1 3 1

1 2 0 5 1 3 11205131

해설

calculate(5) 호출 과정을 단계별로 추적:

  1. calculate(5) 호출
    • left = calculate(5/2=2) 호출
      • calculate(2/2=1) 호출 → 출력 '1', 반환 1
      • 출력 '2'
      • right = calculate(2-2=0) 호출 → 출력 '0', 반환 0
      • left=1, right=0, 반환 1
    • 출력 '5'
    • right = calculate(5-2=3) 호출
      • left = calculate(3/2=1) 호출 → 출력 '1', 반환 1
      • 출력 '3'
      • right = calculate(3-2=1) 호출 → 출력 '1', 반환 1
      • left=1, right=1, 반환 2
    • left=1, right=2, 반환 3

출력 순서: 1 2 0 5 1 3 1

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

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