Computer >> Máy Tính >  >> Lập trình >> C ++

Chương trình cho giá trị trung bình của một mảng (Lặp lại và Đệ quy) trong C ++

Cho một mảng N số nguyên arr [N], nhiệm vụ là tìm giá trị trung bình của arr [N]. Để đạt được kết quả, chúng ta có thể sử dụng phương pháp lặp lại hoặc phương pháp đệ quy. Chúng tôi sẽ hiển thị cả hai trong giải pháp đã cho.

Trung bình của một mảng sẽ là tổng của tất cả các phần tử của một mảng chia cho số phần tử.

Phương thức lặp lại

Trong cách tiếp cận lặp, chúng tôi sử dụng các vòng lặp như vòng lặp for, vòng lặp while hoặc vòng lặp do-while thực thi các câu lệnh cho đến khi điều kiện giữ đúng nghĩa là 1.

Hãy lấy một ví dụ và sau đó thảo luận về cách có thể thu được nó bằng cách sử dụng phương pháp lặp lại.

Đầu vào

arr[] = {1, 2, 4, 5, 8}

Đầu ra

4

Giải thích

sum of all the elements =1+2+4+5+8 = 20,
total number of elements = 5
Average will be = 20/5 = 4

Đầu vào

arr[] = {10, 20, 30, 40}

Đầu ra

25

Phương pháp tiếp cận được sử dụng bên dưới như sau để giải quyết vấn đề (Lặp lại)

  • Lặp lại từng phần tử của mảng bằng vòng lặp.

  • Tính tổng từng phần tử của mảng cho đến khi chúng ta đến cuối mảng.

  • Chia tổng với tổng số phần tử và trả về giá trị trung bình.

Thuật toán

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

Ví dụ

#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;
}

Đầu ra

Nếu chạy đoạn mã trên, nó sẽ tạo ra kết quả sau -

average of an array using iterative method : 5

Phương thức đệ quy

Vậy, cách tiếp cận Đệ quy là gì? Trong cách tiếp cận đệ quy, chúng ta gọi đệ quy một hàm lặp đi lặp lại cho đến khi chúng ta nhận được kết quả mong muốn. Trong cách tiếp cận đệ quy, các giá trị do hàm trả về được lưu trữ trong bộ nhớ ngăn xếp.

Hãy lấy một ví dụ và sau đó thảo luận về cách có thể thu được nó bằng cách sử dụng phương pháp lặp lại.

Đầu vào

arr[] = {2, 4, 6, 8}

Đầu ra

5

Giải thích

sum of all the elements =2+4+6+8 = 20,
total number of elements = 4
Average will be = 20/4 = 5

Đầu vào

arr[] = {12, 23, 45, 15}

Đầu ra

19

Phương pháp tiếp cận được sử dụng bên dưới như sau để giải quyết vấn đề (Đệ quy

  • Chúng tôi sẽ gọi hàm lặp đi lặp lại cho đến khi chúng tôi đến cuối một mảng.

  • Chúng tôi sẽ tính tổng mọi phần tử của mảng và khi đến cuối mảng, chúng tôi sẽ trả về giá trị trung bình của mảng.

Thuật toán

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

Ví dụ

#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;
}

Đầu ra

Nếu chạy đoạn mã trên, nó sẽ tạo ra kết quả sau -

average of an array using a recursive approach is : 4