C ++中数组平均(迭代和递归)程序

给定N个整数arr [N]的数组,任务是找到arr [N]的平均值。为了获得结果,我们可以使用迭代方法或递归方法。我们将在给定的解决方案中展示两者。

数组的平均值将是数组中所有元素的总和除以元素数。

迭代法

在迭代方法中,我们使用诸如for循环,while循环或do-while循环之类的循环来执行语句,直到条件成立为止,即1。

让我们举个例子,然后讨论如何使用迭代方法获得它。

输入值 

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;
//使用迭代方法计算平均值
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;
//用于计算平均值的函数
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));
}
//返回平均值的功能
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