एक पूर्णांक सरणी Arr[] दी गई है जिसमें किसी भी क्रम में पूर्णांक संख्याएँ हैं। लक्ष्य है इनपुट पूर्णांक val को सरणी में पुनरावर्ती खोज का उपयोग करके ढूंढना।
यदि val इनपुट सरणी Arr[] में नहीं मिलता है तो -1 लौटाएं। यदि Arr[] में मिलता है तो val का इंडेक्स प्रिंट करें।
उदाहरण
इनपुट - Arr[] = {11,43,24,50,93,26,78} val=26
आउटपुट - 26 इंडेक्स 5 पर मिला
व्याख्या -
सरणी में तत्व इंडेक्स 0 से इंडेक्स=सरणी लंबाई -1 तक शुरू होते हैं। पहला इंडेक्स=0 अंतिम इंडेक्स=6: 11 != 26, 78 != 26 → 0+1, 6-1 पहला इंडेक्स=1 अंतिम इंडेक्स=5: 43 != 26, 26 = 26 5 लौटाएं 26 इंडेक्स 5 पर मौजूद है।
इनपुट - Arr[] = {11,43,24,50,93,26,78} val=66
आउटपुट - 66 मौजूद नहीं है
व्याख्या -
सरणी में तत्व इंडेक्स 0 से इंडेक्स=सरणी लंबाई -1 तक शुरू होते हैं। पहला इंडेक्स=0 अंतिम इंडेक्स=6: 11 != 66, 78 != 66 → 0+1, 6-1 पहला इंडेक्स=1 अंतिम इंडेक्स=5: 66 != 26, 66 != 26 → 1+1, 5-1 पहला इंडेक्स=2 अंतिम इंडेक्स=4: 24 != 66, 93 != 66 → 2+1, 4-1 पहला इंडेक्स=3 अंतिम इंडेक्स=3: 50 != 26, 50 != 26 → 3+1, 3-1 पहला इंडेक्स=3 अंतिम इंडेक्स=2 3>2 अंत 66 नहीं मिला।
उपयोग किया गया दृष्टिकोण
इस दृष्टिकोण में हम सरणी को दोनों छोर से रैखिक रूप से ट्रैवर्स करते हैं। इनपुट मान की तुलना दोनों छोर पर मौजूद तत्वों से करते हैं। यदि मिल जाता है, तो इंडेक्स लौटाएं अन्यथा अगले तत्वों के लिए पुनरावर्ती रूप से जांचें जहां पहला इंडेक्स = पिछला पहला इंडेक्स + 1 और अंतिम इंडेक्स = पिछला अंतिम इंडेक्स - 1। यदि पहला इंडेक्स > अंतिम इंडेक्स हो जाता है तो तत्व नहीं मिला।
पूर्णांक तत्वों के साथ इनपुट सरणी Ar[] लें।
खोजे जाने वाले तत्व को val के रूप में लें।
फ़ंक्शन searchRec(int arr[], int start, int end, int num) एक सरणी, पहला और अंतिम इंडेक्स और खोजे जाने वाले मान num को लेता है और यदि मिल जाए तो इंडेक्स लौटाता है।
चर result को -99 के रूप में लें।
यदि arr[start] == num तो result को start के रूप में सेट करें।
यदि arr[end] == num तो result को end के रूप में सेट करें।
यदि (start > end) तो result = -1 सेट करें। क्योंकि पूरी सरणी ट्रैवर्स हो चुकी है।
यदि result का मान -99 के अलावा कुछ है तो result लौटाएं अन्यथा searchRec(arr, start + 1, end - 1, num) का उपयोग करके पुनरावर्ती रूप से खोजें।
main के अंदर रिटर्न मान की जांच करें और तदनुसार परिणाम प्रिंट करें।
उदाहरण
#include<bits/stdc++.h> using namespace std; int searchRec(int arr[], int start,int end, int num){ int result=-99; if (start > end){ result= -1; } if (arr[start] == num){ result=start; } if (arr[end] == num){ result=end; } if( result!=-99){ return result; } return searchRec(arr, start + 1, end - 1, num); } int main(){ int Arr[] = {11,43,22,56,33,26,78}; int i; int len = sizeof(Arr) / sizeof(Arr[0]); int val = 56; int pos = searchRec(Arr, 0, len - 1, val); if (pos == -1){ cout<<val<<" is not present" ; } else{ cout<<val<<" found at index "<<pos; } return 0; } आउटपुट
उपरोक्त कोड चलाने पर निम्नलिखित आउटपुट उत्पन्न होगा:
56 found at index 3