다음 C 프로그램에서 두 재귀 호출의 반환값을 계산하여 출력되는 정수를 쓰시오.
#include <stdio.h>
int factorial(int n) {
if (n <= 1) return 1;
return n * factorial(n - 1);
}
int main(void) {
printf("%d", factorial(5) / factorial(3));
return 0;
}모범답안
20
풀이와 판단 근거
factorial(5)는 5×4×3×2×1=120이고 factorial(3)은 3×2×1=6이다. 정수 나눗셈 120/6의 결과는 20이다.
두 호출을 각각 끝까지 계산해도 되지만 공통인 3!을 약분해 5×4로 바로 계산할 수도 있다. 종료 조건 n<=1에서 1을 반환하므로 재귀는 정상 종료한다.
자주 틀리는 지점
- 5!만 계산해 120을 답함
- 5!/3!을 (5/3)!처럼 계산함
- 종료 조건에서 0을 반환한다고 보고 전체 결과를 0으로 만듦
자동 판정 방식
한글·영문 동의어와 문항별 필수 개념을 확인하며, 정답 단어가 부정되거나 반대 개념과 함께 쓰이면 자동 정답으로 확정하지 않습니다. 부분점수는 ITPASSLAB의 학습용 예상 점수입니다.