Certificate/정보처리기사 실기

2023년 3회 기출 08 - C언어

웨일파도 2024. 4. 3. 17:53
반응형
#include <stdio.h>
int soojebi(int n) {
	if(n<=1) {
		return n;
	}
	else {
		return soojebi(n-1) + soojebi(n-3);
	}
}

int main() {
	printf("%d", soojebi(7))'
	return 0;
}

 

이 코드는 주어진 숫자에 대해 사용자 정의 재귀 함수 soojebi를 호출하여 결과를 출력합니다. soojebi 함수는 특정 규칙에 따라 값을 계산하는데, 이 규칙은 입력된 n이 1 이하인 경우 n을 반환하고, 그렇지 않으면 soojebi(n-1) + soojebi(n-3)의 결과를 반환합니다.

 

soojebi(7) 2
soojebi(6) 1
soojebi(5) 1
soojebi(4) 1
soojebi(3) 1
soojebi(2) 1
soojebi(1) 1
soojebi(-1) -1
soojebi(0) 0

 

이 표는 함수가 어떻게 재귀적으로 호출되고, 각 호출에서 어떤 값이 반환되는지 요약한 것입니다. 예를 들어, soojebi(7)은 soojebi(6)과 soojebi(4)의 결과를 더한 값을 반환합니다. 하지만 위의 표에서는 각 호출의 결과만 나타내고, 실제 재귀 호출의 구조와 중첩된 호출 관계는 자세히 설명하지 않습니다. 각 호출 시점에서 return 행은 해당 함수 호출이 끝났음을 나타내며, 반환된 결과값을 보여줍니다.

 

이 표는 단순화되어 있으며, 실제로는 soojebi(7) 함수 내에서 많은 중첩 호출이 발생합니다. 예를 들어, soojebi(6)은 soojebi(5)와 soojebi(3)을 호출하며, 이들 각각도 다시 더 낮은 숫자에 대한 soojebi 호출을 일으킵니다. 각 호출에서는 n이 1이하일 때까지 계속해서 재귀적으로 함수가 호출됩니다. ​

반응형