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

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

문제

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

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

정답

021413021

021413021

해설

trace(4)에서 먼저 trace(2)를 호출한다. trace(2)는 trace(0)을 호출해 0을 출력하고, 이어 2를 출력한 뒤 trace(1)을 호출해 1을 출력한다. 여기까지 출력은 021이다. 이후 trace(4)가 4를 출력하고 trace(3)을 호출한다. trace(3)은 trace(1)로 1을 출력하고, 3을 출력한 뒤 trace(2)를 다시 호출하여 0, 2, 1을 차례로 출력한다. 따라서 최종 출력은 021413021이다.

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

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