2012-02-20 10 views
5

में होता हूं, मैं जावा में अच्छा नहीं हूं इसलिए मैं पहले से ही यह कहना चाहता हूं कि "यह मेरा घर है" और कृपया "मेरा होमवर्क न करें", यह पहला है रिकर्सन पर होमवर्क इसलिए यह मेरा पहला समय है। ऐसा कहकर, ये मेरे गृहकार्य के निर्देश हैं लेकिन मुझे यकीन नहीं है कि लक्ष्य प्राप्त करने के लिए मुझे जो कदम उठाने की आवश्यकता है। मुझे बस एक महान लड़का/लड़की है जो मुझे अपना होमवर्क, तरह के कदमों को खत्म करने के बारे में अच्छी जानकारी दे सकता है। मैंने पुस्तक पढ़ी है, रिकर्सन के बारे में कुछ वेबसाइटों की जांच की है, लेकिन मुझे लगता है कि मुझे थोड़ा और मदद चाहिए।रिकर्सिव रूप से उन पदों की एक सरणी लौटाएं जहां मैं j

एक पुनरावर्ती स्थिर विधि है कि, यह देखते हुए दो स्ट्रिंग रों और टी, सभी पदों जहां टी एस में होता है की एक सरणी रिटर्न लिखें। उदाहरण के लिए, findLocations ("फ्रांसिस भाग गया और भाग गया", "भाग गया") रिटर्न [1, 8, 16]।

+1

दुर्भाग्य से यह एक पुनरावर्ती एल्गोरिदम के लिए एक अच्छा उदाहरण नहीं है, परिणाम प्राप्त करने के लिए पुनरावृत्ति का उपयोग करने के लिए यह अधिक सरल है। यदि यह एक लिंक्ड सूची थी जिसे किसी को वापस करना चाहिए, तो रिकर्सन अधिक उपयुक्त होगा, चूंकि लिंक्ड सूचियों का समावेशन सरणी के संयोजन के विपरीत काफी प्राकृतिक है। –

+0

+1 यह कहने के लिए कि आप नहीं चाहते हैं कि हम आपके लिए अपना एच/डब्ल्यू करें। लेकिन हम एक डेटिंग वेबसाइट नहीं हैं ... "मुझे बस एक महान लड़का/लड़की है" ... = पी किसी भी दर पर, यदि किसी भी उत्तर ने आपकी समस्या के साथ आपकी मदद की है, तो आपको शायद टिक पर क्लिक करना चाहिए उत्तर को चिह्नित करने/अधिक प्रतिनिधि प्राप्त करने के लिए उस उत्तर के तहत (या जिस उत्तर ने आपकी मदद की है)। – blahman

+0

जजाजा जो मजाकिया था मुझे यकीन नहीं है कि मुझे इसे आक्रामक के रूप में चिह्नित करना चाहिए। –

उत्तर

4

शायद मैं इसे इस तरह के दृष्टिकोण होगा:

  1. को देखते हुए argumets inputString और substring, फोन index = inputString.indexOf(substring)

  2. तो substring है नहीं पाया (index = -1), आप खाली सरणी (new int[0]), लौट जाना चाहिए, क्योंकि सबस्ट्रिंग का कोई घटनाओं inputString में मौजूद है।

  3. अन्यथा substring मौजूद है, ऐसी स्थिति में आप क्या करना चाहिए निम्नलिखित:

    1. , स्ट्रिंग के शेष भाग के लिए अनुक्रमणिका की सरणी जाओ arr = findLocations(inputString.substring(index+1), substring)

    2. की तरह कुछ का उपयोग कर

      प्रत्येक तत्व में index जोड़कर arr में अनुक्रमणिका समायोजित करें।

    3. वापसी index, arr के साथ संगत।

+0

ठीक है जो मेरी मदद के रूप में दिमाग में था जैसा दिखता है। धन्यवाद श्री –

1

रास्ता प्रत्यावर्तन काम करता है कि यह आमतौर पर एक नियंत्रित विधि, और फिर एक कार्रवाई विधि के साथ किया जाता है। नियंत्रण विधि में रिकर्सिव कॉल होता है (इसे पूंछ रिकर्सन कहा जाता है)। इस समस्या को हल करने के लिए पूंछ रिकर्सन का उपयोग करने में सबसे अधिक संभावना एक स्लाइडिंग विंडो शामिल होगी। जावा में रिकर्सन के बारे में इस साइट पर कुछ अच्छी जानकारी है: http://www.danzig.us/java_class/recursion.html

नोट: क्षमा करें, लेकिन कुछ psuedo लिखने में मैं इस कोड का निर्माण करने आया था। मैं वास्तव में रिकर्सन का आनंद लेता हूं। मैं यहाँ ढीली में छोड़ दिया ताकि यदि आप एक चेक के रूप में शायद यह देखना चाहते हैं बाद में आप स्वरूपित कर सकते हैं यह

सार्वजनिक ArrayList findLocations (स्ट्रिंग लक्ष्य, स्ट्रिंग विंडो) { ArrayList स्थानों = नए ArrayList(); वापसी (रिकर्स लोकेशन (लक्ष्य, विंडो, 0, स्थान)); }
सार्वजनिक ArrayList recurseLocations (स्ट्रिंग लक्ष्य, स्ट्रिंग विंडो, int ऑफसेट, ArrayList स्थानों) { अगर (window.length + ऑफ़सेट < लक्ष्य।लंबाई) वापसी स्थान; बूल हिट = सत्य; (int i = 0; i < window.length; i ++) अगर (target.charAt (i + ऑफसेट)! = Window.charAt (i)) hit = false; अगर (हिट) places.add (ऑफ़सेट); रिकर्स लोकेशन (लक्ष्य, विंडो, (ऑफसेट + 1), स्थान); }

+0

हां, मैंने पहले से ही उस वेबसाइट को पढ़ा है, क्योंकि मैं किसी भी प्रतिक्रिया के लिए इंतजार कर रहा था। लिंक के लिए धन्यवाद और निश्चित रूप से कोड जो मुझे इस विषय को परीक्षा के लिए बेहतर समझने में मदद करेगा। –

1

के रूप में आप पहली स्ट्रिंग के माध्यम से recursing किया जाएगा और सक्रिय रूप से सूचकांक जोड़ने, मैं इस तरह के एक सूची के रूप में कुछ परिवर्तनशील, का उपयोग कर की सिफारिश करेंगे।

// Initialize results list first 
// Start the search using index = 0 and your empty results list. 
ArrayList<Integer> recurSearch(String input, String search, int index, ArrayList<Integer> results) 

// Inside recurSearch() 
int index = inputString.indexOf(search string, index); 
// Here check the index. If it equals -1, no more matches. Return your result List. 
// If does not equal -1, add to result list and return findLocations() using index + 1. 

मुझे आशा है कि यह समझ में आता है:

अपने पुनरावर्ती विधि के रूप में, यहाँ कुछ सुझाव दिए गए हैं। जैसा कि आप स्पष्ट रूप से इस समस्या के अधिकांश से निपटना चाहते हैं, मैंने जितना संभव हो उतना छोटा कोड शामिल करने का प्रयास किया। मैंने अपनी विधि हस्ताक्षर शामिल किया क्योंकि मुझे उम्मीद है कि यह आपको सही दिशा में इंगित करेगा।

+0

धन्यवाद, मैं आपके समय और सहायता की सराहना करता हूं। –

संबंधित मुद्दे