C++数组平均值程序(迭代和递归)
给定一个包含N个整数的数组arr[N],任务是找到arr[N]的平均值。为了达到结果,我们可以使用迭代方法或递归方法。我们将在给定的解决方案中展示这两种方法。
数组的平均值是数组所有元素之和除以元素个数。
迭代方法
在迭代方法中,我们使用for循环、while循环或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
广告
数据结构
网络
关系数据库管理系统(RDBMS)
操作系统
Java
iOS
HTML
CSS
Android
Python
C语言编程
C++
C#
MongoDB
MySQL
Javascript
PHP