모두CBT

다음 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−1)/2(n-1)/2로 줄어들어 재귀 단계 수는 n의 이진수 자릿수(20 = 10100, 다섯 자리)와 같다.

오류나 개정된 내용이 보이면 알려주세요

이어서 풀어보기

[7급 국가직 자료구조론] 25년 1회차 25문항 이어서 보기문제·정답·해설을 한 페이지에서 이어서 볼 수 있어요7급 국가직 자료구조론 기출문제 암기장 전체 보기