모두CBT

다음 C 프로그램의 실행 결과로 옳은 것은?int fun(int n) … | [국회직 9급 컴퓨터일반] 20년 1회차 기출문제 상세 페이지

1[국회직 9급 컴퓨터일반] 20년 1회차
다음 C 프로그램의 실행 결과로 옳은 것은?
int fun(int n) {
printf("%d ", n);
if(n < 3) return 1;
return (fun(n - 3) + fun(n - 2));
}
int main() {
int k;
k = fun(5);
printf("%d\n", k);
}
1
5 1 2 2 0
2
5 2 3 1 0
3
5 2 3 0 1
4
5 2 3 0 1 3
5
5 2 3 0 3 1
해설

실행 결과는 5 2 3 0 1 3이다. 앞의 다섯 값은 재귀 호출마다 찍힌 n이고, 마지막 3은 main에서 찍은 반환값이다.

덧셈의 왼쪽 호출부터 평가된다고 보고 추적한다.
fun(5): 5 출력 → fun(2) + fun(3)
fun(2): 2 출력 → n < 3 이므로 1 반환
fun(3): 3 출력 → fun(0) + fun(1)
fun(0): 0 출력 → 1 반환
fun(1): 1 출력 → 1 반환
fun(3)은 1 + 1 = 2, fun(5)는 1 + 2 = 3을 반환한다.

  • 5 1 2 2 0: fun(5)의 첫 호출은 n - 3 인 fun(2)이므로 두 번째 출력이 1일 수 없다.
  • 5 2 3 1 0: fun(3)에서는 fun(0)이 먼저 호출되므로 0이 1보다 앞선다.
  • 5 2 3 0 1: 재귀 출력만 있고 main이 찍는 k 값이 빠져 있다.
  • 5 2 3 0 3 1: k는 맨 마지막에 출력되므로 3이 fun(1)의 출력보다 앞설 수 없다.

오류나 개정된 내용이 보이면 알려주세요

이어서 풀어보기

[국회직 9급 컴퓨터일반] 20년 1회차 20문항 이어서 보기문제·정답·해설을 한 페이지에서 이어서 볼 수 있어요국회직 9급 컴퓨터일반 기출문제 암기장 전체 보기