एन पूर्णांक एआर [एन] की एक सरणी को देखते हुए, कार्य एआर [एन] का औसत खोजना है। परिणाम प्राप्त करने के लिए हम या तो पुनरावृत्त दृष्टिकोण या पुनरावर्ती दृष्टिकोण का उपयोग कर सकते हैं। हम दिए गए समाधान में दोनों दिखाएंगे।
किसी सरणी का औसत, तत्वों की संख्या से विभाजित सरणी के सभी तत्वों का योग होगा।
पुनरावृत्ति विधि
पुनरावृत्त दृष्टिकोण में, हम फॉर-लूप, जबकि-लूप या डू-लूप जैसे लूप का उपयोग करते हैं जो स्टेटमेंट को तब तक निष्पादित करता है जब तक कि कंडीशन सही न हो जिसका अर्थ है 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; //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