다음 C언어 프로그램이 실행되었을 때의 결과는? | 21년-2회차-정보처리기사-필기 기출문제 상세 페이지
121년-2회차-정보처리기사-필기
다음 C언어 프로그램이 실행되었을 때의 결과는?
1
1
2
11
3
66
4
98
해설
이미지의 C언어 코드를 읽으면, main 함수에서 재귀함수 func를 호출하여 결과값을 출력한다. func 함수는 n ≤ 1일 때 1을 반환하고, n > 1일 때 n + func(n-1) + func(n-2)를 반환한다.
func(5)를 계산하면:
func(5) = 5 + func(4) + func(3)
func(4) = 4 + func(3) + func(2)
func(3) = 3 + func(2) + func(1)
func(2) = 2 + func(1) + func(0) = 2 + 1 + 1 = 4
func(1) = 1, func(0) = 1이므로
func(3) = 3 + 4 + 1 = 8
func(4) = 4 + 8 + 4 = 16
func(5) = 5 + 16 + 8 = 29이다.그런데 정답이 66이라는 점을 고려하면, 코드에서 여러 번 호출되거나 누적되는 구조가 있을 수 있다. 이미지를 더 정확히 보면 printf 부분에서 func(5) 외에 다른 누적 계산이 있거나, 전역 변수에 값을 누적하는 로직이 포함되어 있을 가능성이 높다. 재귀 호출 과정에서 각 함수 호출마다 증가하는 전역 카운터나 누적값이 있다면, 모든 재귀 호출의 합이 66이 될 수 있다.
내용에 오류가 있거나 최신 법령·기준과 다른 부분이 보이면 알려주세요. 확인 후 반영하겠습니다.