N개의 정수 배열 arr[N]이 주어지면 작업은 arr[N]의 평균을 찾는 것입니다. 결과를 얻기 위해 반복적 접근 또는 재귀적 접근을 사용할 수 있습니다. 우리는 주어진 솔루션에서 둘 다 보여줄 것입니다.
배열의 평균은 배열의 모든 요소의 합을 요소 수로 나눈 값입니다.
반복적 방법
반복적 접근에서 우리는 조건이 1을 의미하는 참이 될 때까지 명령문을 실행하는 for-loop, while-loop 또는 do-while 루프와 같은 루프를 사용합니다.
예를 들어 반복 접근 방식을 사용하여 얻을 수 있는 방법에 대해 논의해 보겠습니다.
입력
arr[] = {1, 2, 4, 5, 8}
출력
4
설명
sum of all the elements =1+2+4+5+8 = 20, total number of elements = 5 Average will be = 20/5 = 4
입력
arr[] = {10, 20, 30, 40}
출력
25
문제를 해결하기 위해 아래에 사용된 접근 방식(반복)
-
루프를 사용하여 배열의 각 요소를 반복합니다.
-
배열의 끝에 도달할 때까지 배열의 각 요소를 합산합니다.
-
합계를 요소의 총수로 나누어 평균을 반환합니다.
알고리즘
Start Step 1→ Declare function to calculate average using iterative method double avg(int arr[], int size) declare int sum = 0 Loop For int i=0 and i<size and i++ Set sum += arr[i] End return sum/size Step 2→ In main() Declare int arr[] = {2,3,1,6,8,10} Declare int size = sizeof(arr)/sizeof(arr[0]) Call avg(arr, size) Stop
예시
#include <iostream> using namespace std; //calculate average using an iterative method double avg(int arr[], int size){ int sum = 0; for (int i=0; i<size; i++) sum += arr[i]; return sum/size; } int main(){ int arr[] = {2,3,1,6,8,10}; int size = sizeof(arr)/sizeof(arr[0]); cout<<"average of an array using iterative method : "&l<t;avg(arr, size) << endl; return 0; }
출력
위의 코드를 실행하면 다음 출력이 생성됩니다 -
average of an array using iterative method : 5
재귀적 방법
그렇다면 재귀 접근 방식은 무엇입니까? 재귀 접근 방식에서는 원하는 결과를 얻을 때까지 함수를 계속해서 재귀적으로 호출합니다. 재귀적 접근에서 함수에 의해 반환된 값은 스택 메모리에 저장됩니다.
예를 들어 반복 접근 방식을 사용하여 얻을 수 있는 방법에 대해 논의해 보겠습니다.
입력
arr[] = {2, 4, 6, 8}
출력
5
설명
sum of all the elements =2+4+6+8 = 20, total number of elements = 4 Average will be = 20/4 = 5
입력
arr[] = {12, 23, 45, 15}
출력
19
아래에 사용된 접근 방식은 문제를 해결하기 위해 다음과 같습니다(재귀적
-
배열의 끝에 도달할 때까지 함수를 계속해서 호출합니다.
-
배열의 모든 요소를 합산하고 배열의 끝에 도달하면 배열의 평균을 반환합니다.
알고리즘
Start Step 1→ Declare function to calculate average using recursive method double recursive(int arr[],int i, int size) IF (i == size-1) return arr[i] End IF (i == 0) return ((arr[i] + recursive(arr, i+1, size))/size) End return (arr[i] + recursive(arr, i+1, size)) Step 2→ double avg(int arr[], int size) return recursive(arr, 0 , size) Step 3→ In main() Declare int arr[] = {1,5,3,2,6,7} Declare int size = sizeof(arr)/sizeof(arr[0]) Call average(arr, size) Stop
예시
#include <iostream> using namespace std; //function for calculating average recusively double recursive(int arr[],int i, int size){ if (i == size-1) return arr[i]; if (i == 0) return ((arr[i] + recursive(arr, i+1, size))/size); return (arr[i] + recursive(arr, i+1, size)); } //function for returning average double average(int arr[], int size){ return recursive(arr, 0 , size); } int main(){ int arr[] = {1,5,3,2,6,7}; int size = sizeof(arr)/sizeof(arr[0]); cout<<average of an array using a recursive approach is : "<<average(arr, size) << endl; return 0; }
출력
위의 코드를 실행하면 다음 출력이 생성됩니다 -
average of an array using a recursive approach is : 4