다음 C 코드에서 power(2.0, 20, 0)를 호출할 때, 변수 … | [7급 국가직 자료구조론] 25년 1회차 기출문제 상세 페이지
1[7급 국가직 자료구조론] 25년 1회차
다음 C 코드에서 power(2.0, 20, 0)를 호출할 때, 변수 c의 마지막 출력값은?double power(double x, int n, int c)
{
printf("c : %d\n", c);
if(n == 0) return 1;
else if(n % 2 == 0) {
c++;
return power(x * x, n / 2, c);
}
else {
c++;
return x * power(x * x, (n - 1) / 2, c);
}
}
1
5
2
6
3
7
4
8
해설
호출될 때마다 c를 먼저 출력하고 n이 0이 될 때까지 c를 1씩 늘려 재귀하므로 마지막 출력값은 5이다.
추적 (n, 출력되는 c): (20, 0) → (10, 1) → (5, 2) → (2, 3) → (1, 4) → (0, 5)
n이 0인 호출은 c를 출력한 뒤 c를 늘리지 않고 1을 반환하며 끝난다.n은 짝수면 절반, 홀수면 로 줄어들어 재귀 단계 수는 n의 이진수 자릿수(20 = 10100, 다섯 자리)와 같다.
오류나 개정된 내용이 보이면 알려주세요