다음은 n개의 데이터에 대한 평균을 재귀적으로 계산하는 프로그램이다. … | [7급 국가직 알고리즘] 25년 1회차 기출문제 상세 페이지
1[7급 국가직 알고리즘] 25년 1회차
다음은 n개의 데이터에 대한 평균을 재귀적으로 계산하는 프로그램이다. (가) ~ (다)에 들어갈 내용을 바르게 연결한 것은? (단, n ≥ 1이다)float AVG(float (가), int n) {
if(n == 1) return (나);
else
return (data[n - 1] + (n - 1) * AVG(data, n - 1)) / (다);
}1
(가) data[] / (나) 0 / (다) n
2
(가) data[] / (나) 1 / (다) (n-1)
3
(가) *data / (나) data[0] / (다) n
4
(가) *data / (나) data[n-1] / (다) (n-1)
해설
(가)는 *data, (나)는 data[0], (다)는 n이다.
원소가 하나면 평균은 그 원소 자신이므로 data[0]을 반환한다.
앞 n-1개의 평균에 (n-1)을 곱하면 그 합이 되고, 여기에 마지막 원소 data[n-1]을 더하면 n개의 합이므로 n으로 나누어야 평균이 된다. 매개변수는 배열을 받는 포인터 *data로 선언한다.
- (나)를 0으로 두면 원소가 하나일 때 평균이 항상 0이 되어 틀렸다.
- (나)를 1로, (다)를 (n-1)로 두면 기저값과 나누는 개수가 모두 맞지 않는다.
- (나)를 data[n-1]로, (다)를 (n-1)로 두면 n개 합을 n-1로 나누게 되어 평균이 아니다.
오류나 개정된 내용이 보이면 알려주세요