자격증/정보처리기사 실기 - 기출문제

[정보처리기사 실기] 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));
}

 

 

 

 

 

 

해설

코드 실행순서 및 해석
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 }