[2025. 중등임용 정보ㆍ컴퓨터] 재귀 함수와 조건 분기 분석

재귀 함수와 조건 분기 분석

정답

㉠에는 0이 들어가며, 20을 입력하면 출력은 \(6\)이다.

출제 의도

재귀함수의 동작을 추적하여 어떤 값을 계산하는지 파악하고, 주어진 입력에 대해 결과를 올바르게 구할 수 있는지를 평가하는 문제이다. 특히 조건문에 따른 누적 합의 의미를 이해해야 한다.

풀이 과정

함수 recur(n)의 동작을 살펴본다. \(n \le 1\)이면 \(0\)을 반환하고 재귀호출을 종료한다.

\(n \gt 1\)일 때는 두 경우로 나뉜다.

1. \(n \bmod 3 = 0\) 이면 \(\text{recur}(n) = 1 + \text{recur}(n-1)\) 2. 그렇지 않으면 \(\text{recur}(n) = \boxed{\text{㉠}} + \text{recur}(n-1)\)

여기에서 recur는 2 이상 \(n\) 이하의 수들 중에서 3의 배수의 개수를 세는 것으로 추론할 수 있다. 왜냐하면 \(n\)이 3의 배수일 때만 1을 더하고, 나머지 경우에는 아무 것도 더하지 않아야 하기 때문이다. 따라서 ㉠에는 \(0\)이 들어가야 한다.

\(n = 12\)일 때를 확인한다.

$$ \text{recur}(12) = \text{(2 이상 12 이하의 3의 배수의 개수)} $$

3의 배수는 \(3, 6, 9, 12\) 네 개이므로 \(\text{recur}(12) = 4\)가 되어, 문제의 조건과 일치한다. 따라서 ㉠이 \(0\)이라는 판단이 맞다.

이제 \(n = 20\)일 때를 구한다.

2 이상 20 이하의 3의 배수는

$$ 3, 6, 9, 12, 15, 18 $$

총 6개이므로

$$ \text{recur}(20) = 6 $$

따라서 20을 입력하면 프로그램의 출력값은 \(6\)이다.

<풀이가 부정확할 수 있으니 반드시 교차검증 확인 바랍니다.>