모두CBT

23-3아래 C 프로그램의 출력값을 적으시오.#include <s… | 2023년 정보처리기사실기 3회차 기출문제 상세 페이지

1

23-3

아래 C 프로그램의 출력값을 적으시오.

#include <stdio.h>

int g(int n) {
    if (n <= 1)
        return n;
    return g(n - 1) + g(n - 4);
}

int main(void) {
    printf("%d", g(8));
    return 0;
}
해설

-6


[해설]

g는 n이 1 이하이면 n 자신을 그대로 돌려주는 재귀 함수다. 그래서 g(1)=1, g(0)=0, g(-1)=-1, g(-2)=-2처럼 음수도 값 그대로 반환된다.

작은 값부터 차례로 쌓아 올리면 다음과 같다.
g(2) = g(1) + g(-2) = 1 − 2 = −1
g(3) = g(2) + g(-1) = −1 − 1 = −2
g(4) = g(3) + g(0) = −2 + 0 = −2
g(5) = g(4) + g(1) = −2 + 1 = −1

g(6) = g(5) + g(2) = −1 − 1 = −2
g(7) = g(6) + g(3) = −2 − 2 = −4
g(8) = g(7) + g(4) = −4 − 2 = −6

혼동 주의: 종료 조건이 0이나 1을 반환하는 게 아니라 n을 반환하므로, g(-2)를 0으로 계산하면 틀린다.

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