2024 국가직9급 컴퓨터일반 20번 해설 — C 재귀
정답 ④번출제 쟁점 C 재귀발문 옳은 것 고르기
문제
다음 C 프로그램의 출력 결과는? #include <stdio.h> int recursive(int n) { int sum; if (n > 2) { sum = recursive(n-1) + recursive(n-2); printf("%d ", sum); } else sum = n; return sum; } int main(void) { int result; result = recursive(5); printf("%d", result); return 0; }
- ① 1 2 3 5 7
- ② 1 3 5 7 9
- ③ 3 3 5 9 9
- ④ 3 5 3 8 8 ← 정답
선지별 해설
① 1 2 3 5 7
이 선지 진술은 틀림(X)
n이 2 이하일 때는 출력 없이 값을 반환하고, n이 3 이상일 때만 합계를 출력한다. 실제 출력 순서는 3 5 3 8 8이다.
② 1 3 5 7 9
이 선지 진술은 틀림(X)
recursive(3)이 처음 출력하는 값은 3이고, recursive(4)는 5를 출력한다. 전체 출력은 3 5 3 8 8이다.
③ 3 3 5 9 9
이 선지 진술은 틀림(X)
재귀 호출 순서상 recursive(4) 안에서 3과 5가 출력되고, recursive(5)의 오른쪽 recursive(3)이 다시 3을 출력한다. 최종 출력은 3 5 3 8 8이다.
④ 3 5 3 8 8
이 선지 진술은 옳음(O)
recursive(5)는 recursive(4), recursive(3) 순으로 호출해 중간 합계를 출력한다. 내부 출력 3 5 3 뒤에 main에서 최종 결과 8이 출력되어 3 5 3 8 8이 된다.
핵심 요약 (Q&A)
- Q. 2024 국가직9급 컴퓨터일반 20번의 핵심 쟁점은 무엇인가?
- A. 2024 국가직9급 컴퓨터일반 20번은 C 재귀에 관한 문항으로, "옳은 것"을 고르는 문제입니다.
- Q. 2024 국가직9급 컴퓨터일반 20번의 정답은?
- A. 정답은 ④번입니다. recursive(5)는 recursive(4), recursive(3) 순으로 호출해 중간 합계를 출력한다. 내부 출력 3 5 3 뒤에 main에서 최종 결과 8이 출력되어 3 5 3 8 8이 된다.