배열에 n개의 요소가 저장되어 있을 때, 이 프로그램은 다양한 방법을 사용하여 해당 숫자들의 평균값을 계산합니다. 아래에서는 반복문(Iterative) 방식과 재귀 함수(Recursive) 방식, 두 가지 접근법을 소개합니다.
예제 개요
입력 — 1 2 3 4 5 6 7
출력 — 4
설명 — 배열 요소의 합은 1+2+3+4+5+6+7 = 28입니다.
배열의 요소 개수 = 7
평균 = 28 ÷ 7 = 4
방법 1 — 반복문(Iterative) 사용
이 방법은 가장 기본적인 접근 방식입니다. 반복문을 통해 배열의 모든 요소를 하나씩 더해 합계를 구한 뒤, 그 합을 전체 요소 개수 n으로 나누어 평균을 계산합니다.
주어진 배열 arr[]과 배열의 크기 n을 입력으로 받습니다.
코드 예제
#include<iostream>
using namespace std;
int main() {
int arr[] = { 1, 2, 3, 4, 5, 6, 7 };
int n = 7;
int sum = 0;
for (int i = 0; i < n; i++) {
sum += arr[i];
}
float average = sum / n;
cout << average;
return 0;
}방법 2 — 재귀 함수(Recursive) 사용
이 방법은 요소의 인덱스를 추가 매개변수로 전달하면서 재귀적으로 합계를 계산하는 아이디어입니다. 합계가 완성되면 마지막에 n으로 나누어 평균을 구합니다.
주어진 배열 arr[], 배열의 크기 n, 그리고 초기 인덱스 i를 매개변수로 사용합니다.
입력 — 1 2 3 4 5
출력 — 3
설명 — 배열 요소의 합은 1+2+3+4+5 = 15입니다.
배열의 요소 개수 = 5
평균 = 15 ÷ 5 = 3
코드 예제
#include <iostream>
using namespace std;
int avg(int arr[], int i, int n) {
if (i == n-1) {
return arr[i];
}
if (i == 0) {
return ((arr[i] + avg(arr, i+1, n)) / n);
}
return (arr[i] + avg(arr, i+1, n));
}
int main() {
int arr[] = {1, 2, 3, 4, 5};
int n = 5;
cout << avg(arr, 0, n) << endl;
return 0;
}정리
반복문 방식은 코드가 직관적이고 성능 면에서 효율적이어서 일반적인 상황에서 권장됩니다. 반면 재귀 방식은 코드가 간결해질 수 있지만, 호출 스택을 사용하기 때문에 배열의 크기가 클 경우 오버헤드가 발생할 수 있습니다. 따라서 실무에서는 대부분 반복문 방식을 사용하는 것이 좋습니다. 또한 정확한 평균값을 얻으려면 나눗셈 시 자료형 변환(casting)을 고려하는 것도 중요합니다.