다음 Java 프로그램의 실행 결과를 쓰시오.
public class Main {
static int compute(int num) {
if (num <= 1) {
return num;
}
return compute(num - 1) + compute(num - 3);
}
public static void main(String[] args) {
System.out.print(compute(5));
}
}모범답안
1
풀이와 판단 근거
기저 조건은 num이 1 이하이면 num 자체를 반환하므로 compute(1)=1, compute(0)=0, compute(-1)=-1이다.
점화식을 작은 값부터 적용하면 compute(2)=compute(1)+compute(-1)=0, compute(3)=compute(2)+compute(0)=0, compute(4)=compute(3)+compute(1)=1이다.
따라서 compute(5)=compute(4)+compute(2)=1+0=1이 출력된다. 음수 호출도 0이 아니라 음수 그대로 반환된다는 점을 반영해야 한다.
자주 틀리는 지점
- num이 음수일 때도 0을 반환한다고 가정해 점화값을 잘못 계산함
- 두 번째 재귀 호출을 compute(num - 2)로 읽어 피보나치 수열처럼 계산함
- compute(2)부터 compute(5)까지의 중간값을 생략해 중복 호출의 결과를 잘못 더함
자동 판정 방식
한글·영문 동의어와 문항별 필수 개념을 확인하며, 정답 단어가 부정되거나 반대 개념과 함께 쓰이면 자동 정답으로 확정하지 않습니다. 부분점수는 ITPASSLAB의 학습용 예상 점수입니다.