다음 소스코드에서 입력값이 5가 들어왔을 때 출력되는 값을 쓰시오.
#include <stdio.h>
int func(int a) {
if (a <= 1) return 1;
return a * func(a - 1);
}
int main() {
int a;
scanf("%d", &a);
printf("%d", func(a));
}
scanf와 printf를 통한 입출력 방식 이해int func(int a) {
if (a <= 1) return 1;
return a * func(a - 1);
}
a <= 1일 때 1 반환.a * func(a-1)을 통해 계속 호출.수학적 정의:
예: 5! = 5 × 4 × 3 × 2 × 1 = 120
scanf("%d", &a);
%d : 정수 입력 받기&a : 변수 a의 주소에 값을 저장printf("%d", func(a));
%d : 정수 출력func(a)의 결과값 출력입력값: 5
1. func(5) 실행
5 * func(4)func(4) 실행4 * func(3)func(3) 실행3 * func(2)func(2) 실행2 * func(1)func(1) 실행a <= 1 만족 → 1 반환이제 거꾸로 올라가며 계산:
func(2) = 2 * 1 = 2func(3) = 3 * 2 = 6func(4) = 4 * 6 = 24func(5) = 5 * 24 = 120120
이 문제에서 꼭 알아야 할 개념: