Computer >> 컴퓨터 >  >> 프로그래밍 >> C 프로그래밍

C 프로그래밍으로 배열 요소의 평균 구하기: 반복문과 재귀 함수 활용법

배열에 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)을 고려하는 것도 중요합니다.