다음 재귀함수를 호출하는 C 프로그램의 실행 결과는?#include &… | [7급 국가직 자료구조론] 24년 1회차 기출문제 상세 페이지
1[7급 국가직 자료구조론] 24년 1회차
다음 재귀함수를 호출하는 C 프로그램의 실행 결과는?#include <stdio.h>
void RecursiveFunc(int n) {
if(n <= 0) {
printf("R-%d ", n);
return;
}
printf("R-%d ", n);
if(n%2 == 0)
RecursiveFunc(n-2);
else
RecursiveFunc(n-1);
printf("R-%d ", n);
}
int main(void)
{
RecursiveFunc(3);
return 0;
}
1
R-3 R-2 R-0
2
R-3 R-1 R-0 R-2 R-3
3
R-3 R-2 R-0 R-2 R-3
4
R-3 R-2 R-1 R-2 R-3
해설
출력은 R-3 R-2 R-0 R-2 R-3이다.
RecursiveFunc(3)은 R-3을 출력하고 3이 홀수이므로 RecursiveFunc(2)를 호출한다. 2는 R-2를 출력하고 짝수이므로 RecursiveFunc(0)을 호출하며, 0은 기저 조건(n <= 0)에 걸려 R-0만 출력하고 반환한다.
복귀하면서 재귀 호출 뒤의 printf가 실행되어 RecursiveFunc(2)가 R-2, RecursiveFunc(3)이 R-3을 차례로 출력한다.
- R-3 R-2 R-0은 재귀 호출 뒤에 있는 복귀 시 출력문을 빠뜨린 것이다.
- R-3 R-1 R-0 R-2 R-3은 홀수 3에서 n-1인 2가 아니라 1로 넘어간 것으로 추적한 결과다.
- R-3 R-2 R-1 R-2 R-3은 짝수 2에서 n-2인 0이 아니라 1로 넘어간 것으로 추적한 결과다.
오류나 개정된 내용이 보이면 알려주세요