모두CBT

다음 C 프로그램의 출력 값은?#include <stdio.h&g… | [9급 지방직 컴퓨터일반] 15년 1회차 기출문제 상세 페이지

1[9급 지방직 컴퓨터일반] 15년 1회차
다음 C 프로그램의 출력 값은?
#include <stdio.h>

int recur(int a, int b)
{
if (a <=1)
return a * b;
else
return a * recur(a-1, b+1) + recur(a-1, b);
}

int main()
{
int a=3, b=2;

printf("%d\n", recur(a, b));
}
1
24
2
30
3
41
4
52
해설

출력 값은 41이다.

a가 1 이하이면 a*b를 반환하므로 recur(1,4) = 4, recur(1,3) = 3, recur(1,2) = 2이다.

recur(2,3) = 2 × recur(1,4) + recur(1,3) = 2 × 4 + 3 = 11
recur(2,2) = 2 × recur(1,3) + recur(1,2) = 2 × 3 + 2 = 8

recur(3,2) = 3 × recur(2,3) + recur(2,2) = 3 × 11 + 8 = 41

  • 24, 30, 52는 기저 조건 a ≤ 1에서 a*b를 반환하고 두 재귀 호출 결과를 더하는 과정을 끝까지 추적한 값 41과 다르다.

내용에 오류가 있거나 최신 법령·기준과 다른 부분이 보이면 알려주세요. 확인 후 반영하겠습니다.