इस सुवक्ता जावास्क्रिप्ट से एक उदाहरण है:यह रिकर्सन कैसे काम करता है?
संख्या 1 से शुरू करने और बार-बार या तो 3 से 5 या गुणा जोड़ कर, नए नंबर की एक अनंत राशि का उत्पादन किया जा सकता है। आप एक फ़ंक्शन कैसे लिखेंगे, जो किसी संख्या को दिया गया है, जोड़ों और गुणाओं के अनुक्रम को खोजने का प्रयास करता है जो उस संख्या का उत्पादन करते हैं?
मैं मुसीबत को समझने के प्रत्यावर्तन यहाँ काम कर रहा है, अगर किसी को दो बार कैसे पता बुलाया जा रहा है या कुछ अन्य विवरण बाहर लिख सकता है सोच रहा हो रही है।
function findSequence(goal) {
function find(start, history) {
if (start == goal)
return history;
else if (start > goal)
return null;
else
return find(start + 5, "(" + history + " + 5)") ||
find(start * 3, "(" + history + " * 3)");
}
return find(1, "1");
}
console.log(findSequence(24)); // => (((1 * 3) + 5) * 3)
नोट '' || - यह नीचे recurse होगा (अप करने के लिए) * दो * पथ, लेकिन केवल का परिणाम का उपयोग करता है वह पथ जो एक मूल्य देता है (यानी, यह लक्ष्य को ओवरशूट नहीं करता है)। और नहीं, मैं इसे लिखूंगा (न ही किसी और को, IMOHO) जैसा कि * आप इसे लिख सकते हैं। वो कैसा दिखता है? –
यदि आप अनुक्रम देखना चाहते हैं, तो बस 'console.log() 'का उपयोग करें। यहां [एक उदाहरण] (http://jsfiddle.net/KMX6R/1/) है, हालांकि मैंने इसके बजाय 'document.write' का उपयोग किया था। आपको कंसोल का उपयोग करना चाहिए। –
यह भी देखें [जावास्क्रिप्ट में निष्पादन के पुनरावृत्ति और प्रवाह के लिए एक स्पष्ट स्पष्टीकरण?] (Http://stackoverflow.com/q/720158/1048572) और [एलोक्वेंट जावास्क्रिप्ट से जावास्क्रिप्ट रिकर्सन] (http://stackoverflow.com/q/26205376/1048572) – Bergi