다음 C 재귀 함수에서 동일한 하위 호출이 반복되는 구조를 추적하여 f(7)의 출력값을 쓰시오.
#include <stdio.h>
int f(int n) {
if (n <= 2) return n;
return f(n - 1) + f(n - 3);
}
int main(void) {
printf("%d", f(7));
return 0;
}모범답안
10
풀이와 판단 근거
기저값은 f(0)=0, f(1)=1, f(2)=2다. 점화식을 차례로 적용하면 f(3)=f(2)+f(0)=2, f(4)=f(3)+f(1)=3, f(5)=f(4)+f(2)=5, f(6)=f(5)+f(3)=7, f(7)=f(6)+f(4)=10이다.
n-2가 아니라 n-3을 호출한다는 점이 핵심이다.
자주 틀리는 지점
- 피보나치 수열처럼 f(n-1)+f(n-2)로 계산함
- n<=2일 때 모두 1을 반환한다고 봄
- 재귀 호출의 중복을 별도의 추가값으로 더함
자동 판정 방식
한글·영문 동의어와 문항별 필수 개념을 확인하며, 정답 단어가 부정되거나 반대 개념과 함께 쓰이면 자동 정답으로 확정하지 않습니다. 부분점수는 ITPASSLAB의 학습용 예상 점수입니다.