function even(num) {//console.log(num) => shows 1 & then 0 before terminating.
            if (num === 0) {
                return true;
            } else {
                return !even(num - 1);
            }
        }
    console.log(even(1));
//Why Chrome Console shows num = 1 when .log is being executed.

रिकर्सिव फ़ंक्शन का अन्य भाग तब तक चलेगा जब तक num 0 नहीं हो जाता यह बिल्कुल स्पष्ट है लेकिन क्रोम डेवलपर कंसोल num = 1 प्रिंट दिखाता है जब console.log लॉगिंग कर रहा हो

क्या अंतिम मान 0 या 1 होने वाला है?

कॉल पूर्ण होने के बाद स्क्रीनशॉट:

enter image description here

2
techie_28 30 मार्च 2018, 07:46

2 जवाब

विषम संख्याओं के लिए उत्तर गलत होगा, और सम के लिए सही होगा। यह बिल्कुल वही दिखता है जो आपको चाहिए। लेकिन यह अधिक जटिल दिखता है, ऐसा क्यों न करें

function even(num) {
    return n % 2 == 0;
}
1
Miguel Angel 30 मार्च 2018, 04:54

हाँ क्रोम सही दिखा रहा है जब हम उस तरह की डेटा संरचना जैसे रिकर्सन का उपयोग करते हैं तो यहां क्या होता है सभी कॉल स्टैक पर जा रहे हैं और स्टैक पुश और पॉप ऑपरेशन के अनुसार सभी ऑपरेशन हो रहे हैं। इसलिए

जब आप कार्य करने के लिए 1 पास करते हैं तो मूल रूप से संख्या का मान क्या हो रहा है -

1 -> 0 स्टैक में लेकिन जब आपकी स्थिति सही है तो स्टैक रिलीज़ हो रहा है, इसलिए यह मूल स्थिति पर वापस आ जाएगा और अंतिम मान 1 है, इसलिए आपको 1 क्यों मिल रहा है।

1
Pankaj Bisht 30 मार्च 2018, 05:16