모두CBT

다음 C 프로그램의 실행 결과로 옳은 것은?#include <st… | [국회직 9급 컴퓨터일반] 18년 1회차 기출문제 상세 페이지

1[국회직 9급 컴퓨터일반] 18년 1회차
다음 C 프로그램의 실행 결과로 옳은 것은?
#include <stdio.h>

int recursion(int n)
{
        if (n < 5) return 1;
        else   if (n % 5 == 1) return n + recursion(n - 1);
        else    recursion(n - 1);
}

int main()
{
        int n    = recursion(16);
        printf("%d",    n);

        return    0;
}
1
34
2
33
3
31
4
29
5
28
해설

프로그램의 출력값은 34이다.

n을 5로 나눈 나머지가 1일 때만 n을 더하고, 그 외에는 n-1로 내려간다. 마지막 else에 return이 없어 표준상 미정의 동작이지만, 재귀 결과가 그대로 전달된다고 보고 추적한다.

r(16) = 16 + r(15), r(15)부터 r(12)까지는 r(11)로 내려간다.
r(11) = 11 + r(10), r(10)부터 r(7)까지는 r(6)으로 내려간다.
r(6) = 6 + r(5), r(5) = r(4) = 1이다.
합계: 16 + 11 + 6 + 1 = 34

  • 33: 기저 사례의 반환값 1을 빠뜨린 값이다.
  • 31: 합계 16 + 11 + 6 + 1보다 3 작아 추적 결과와 맞지 않는다.
  • 29: 합계 16 + 11 + 6 + 1보다 5 작아 추적 결과와 맞지 않는다.
  • 28: n = 6에서의 덧셈을 빠뜨린 값이다.

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

이어서 풀어보기

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