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

更新於:2020年8月13日

1K+ 次瀏覽

開啟你的職業生涯

完成課程獲得認證

開始學習
廣告