ठीक है, तो मैं जावा में प्रत्यावर्तन के आसपास मेरे सिर लपेटो करने की कोशिश कर रहा है और मैं इस तरह के योग के रूप में आसान कार्य, पीछे आदि पूरा कर सकते हैं, लेकिन मैं इस अभ्यास करने के लिए संघर्ष कर रहा है:रिकर्सन का उपयोग कर न्यूनतम सरणी ढूंढना?
मैं कोशिश कर रहा हूँ रिकर्सन का उपयोग करके सरणी में न्यूनतम संख्या पाएं लेकिन 0.0 का उत्तर प्राप्त करें।
रिकर्सन के लिए मेरी समझ यह है कि मुझे एक तत्व को बढ़ाने की आवश्यकता है और फिर एक बेस केस प्रदान करें जो रिकर्सन को समाप्त कर देगा। मुझे लगता है कि जब मैं एक मूल्य वापस करना चाहता हूं और रिकर्सन विधि को कॉल करने के लिए सबसे अच्छा है तो मैं गड़बड़ कर रहा हूं।
public static double findMin(double[] numbers, int startIndex, int endIndex) {
double min;
int currentIndex = startIndex++;
if (startIndex == endIndex)
return numbers[startIndex];
else {
min = numbers[startIndex];
if (min > numbers[currentIndex]) {
min = numbers[currentIndex];
findMin(numbers, currentIndex, endIndex);
}
return min;
}
} //findMin
तो, अगर मैं रिकर्सिव findMin विधि को कॉल करने से पहले वापसी विवरण होना चाहिए? साथ ही, मैं समझ नहीं पा रहा हूं कि startIndex कैसे बदल रहा है। जब मैं रिकर्सिव findMin विधि को कॉल करता हूं, तो मैं वर्तमान इंडेक्स (स्टार्ट इंडेक्स के बजाए) के साथ पैरामीटर का उपयोग कर रहा हूं, जिसे बाद में एक नया स्टार्ट इंडेक्स के रूप में पास किया जाना चाहिए, सही? मुझे लगता है कि मैं खुद को भ्रमित करना शुरू कर रहा हूं :( – Vance
@ user699302: समस्या 'currentIndex = startIndex ++' है। जब 'startIndex' 0 है,' currentIndex' 0 हो जाता है और 'startIndex' बन जाता है 1. जब आप' findMin' 'कहते हैं , आप इसे 'currentIndex' पास करते हैं, इसलिए उस कॉल में 'startIndex' एक बार फिर 0 हो जाएगा, जिससे अनंत रिकर्सन और स्टैक ओवरफ़्लो हो जाएगा। – ColinD