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
廣告