से समझाएं मुझे इस फ़ंक्शन के बाद कठिन समय हो रहा है। मुझे समझ नहीं आता कैसे चर start
16 को वापस reverts के बाद यह है जो 26 के एक मूल्य तक पहुँच जाता है से अधिक 24.इस जावास्क्रिप्ट फ़ंक्शन को Eloquent जावास्क्रिप्ट
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");
}
print(findSequence(24));
ठीक है कि स्पष्ट हो सकता है, कुछ समय के लिए इस देखने के बाद, मैं कुछ प्रश्न हैं एक कुछ चीजें:
1) क्या यह कहने का एक सही बयान है कि प्रत्येक कॉल को खोजने के लिए यह अपने स्वयं के प्रारंभ मूल्य का ट्रैक रखता है? उदाहरण के लिए, जब (1) को कॉल किया जाता है, तो इसका प्रारंभ मूल्य 1 होता है, जब खोज (1 + 5) कहा जाता है, तो ढूंढें (1) का प्रारंभ मूल्य अभी भी एक है, लेकिन अब (1 + 5) ढूंढें यह 6 का अपना प्रारंभिक मूल्य है।
2) मुझे स्टैकट्रैक के बाद कठिन समय हो रहा है, भले ही मैं इसे मुद्रित करता हूं। यह कैसे मैं इसे देख रहा हूँ:
खोज (1) कहता है लगता है (1 + 5) शुरू // = 1
खोज (6) कॉल लगता है (6 + 5) = 6 शुरू //, पासेस
खोज (11) कॉल लगता है (11 + 5) शुरू // = 11, पासेस
खोज (16) कॉल लगता है (16 + 5) शुरू // = 16, पासेस
खोज (21) कॉल ढूंढें (21 + 5) // स्टार्ट = 21, विफलता
बेका खोज का उपयोग करें (21 + 5) शून्य लौटाता है, यह खोजने के लिए कोशिश करता है (21 * 3) जो शून्य भी देता है।
यह वह हिस्सा है जो मैं फंस जाता हूं, अगर दोनों पाते हैं (21 + 5) और पाते हैं (21 * 3) वापस लौटते हैं, तो यह पता लगाने के लिए कैसे पता चलता है (16 * 3)। ऐसा क्यों नहीं मिलता है (16 + 5) फिर से?
क्या ऐसा कुछ करने के लिए है जहां खोजने के लिए (21 + 5) और ढूंढें (21 * 3) को खोजने के लिए बुलाया गया था (16) और क्योंकि वे कॉलिंग फ़ंक्शन में शून्य हो गए, यह || बयान जो मिला था (16 * 3)।
दो पाइप का अर्थ "या" नहीं है? आप एक चीज़ या दूसरी चीज़ कैसे वापस कर सकते हैं? – ScottC
@ एसकॉटसी: जावास्क्रिप्ट में, "या" '|| || 'पहला आइटम देता है यदि यह सत्य-हैश है, या दूसरा आइटम यदि पहला आइटम झूठा-आश है (जिसमें शून्य शामिल है)। यह बूलियन का एक सामान्यीकरण है-या, और एक नल-कोलेसे ऑपरेटर के समान व्यवहार करता है। – Jimmy
@ScottC: बूलियन स्थितियों के बारे में अपनी जावास्क्रिप्ट पुस्तक में अध्याय पढ़ें। यह 'var x = y || जैसा ही है z; वापसी x; '। –