자격증/정보처리기사 실기 - 기출문제
[정보처리기사 실기] 2022년 1회 12 - 프로그래밍 [C]
쏠솔랄라
2025. 7. 19. 12:47
12 다음 C 언어로 구현된 프로그램을 분석하여 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));
}
답
더보기
120
해설
코드 | 실행순서 및 해석 | ||
1 | #include <stdio.h> | ||
2 | int func(int a) { | 5 | 호출 → func(5) |
3 | if(a <= 1) return 1; | 6 | // a가 1과 같아질 때까지 반복 a는 5이므로 실행하지 않음 |
8 | a는 4이므로 실행하지 않음 | ||
10 | a는 3이므로 실행하지 않음 | ||
12 | a는 2이므로 실행하지 않음 | ||
14 | a는 1이므로 1 반환 | ||
4 | return a * func(a-1) | 7 | 5*func(4) 반환 // 재귀함수 |
9 | 5*4*func(3) 반환 | ||
11 | 5*4*3*func(2) 반환 | ||
13 | 5*4*3*2*func(1) 반환 | ||
15 | 5*4*3*2*1 반환 | ||
5 | } | ||
6 | int main() { | 1 | 실행 |
7 | int a; | 2 | |
8 | scanf("%d", &a); | 3 | 정수형 a를 입력받음 |
9 | printf("%d", func(a)); | 4 16 |
func(a)를 호출해 출력 출력: 120 |
10 | } |