क्या एक पुनरावर्ती खंड समारोह लिखना संभव है? यदि नहीं, तो क्यों नहीं?

मुझे इस फ़ंक्शन की आवश्यकता नहीं है, मैं केवल रिकर्सन को समझने और अवधारणा का उपयोग करने वाले अपने स्वयं के कार्यों को लिखने की कोशिश कर रहा हूं। अगर मैं इस समस्या को हल करने के लिए रिकर्सन का उपयोग नहीं कर सकता, तो इस मामले में और अन्य में नौकरी के लिए रिकर्सन गलत टूल क्या बनाता है?

    function chunk(array, size) {
      if (array.length === 0) {
        return array;
      } else {
        return [array.slice(0, size), chunk(array.slice(size),size)];
      }
    }
-2
Andy 22 जुलाई 2018, 20:27
2
क्या आप परिणाम को समतल करना चाह रहे हैं? बस रिकर्सिव कॉल फैलाएं
 – 
Andrew Li
22 जुलाई 2018, 20:29
1
आपने यह नहीं बताया कि आप किस समस्या का समाधान करना चाहते हैं।
 – 
charlietfl
22 जुलाई 2018, 20:30
2
हाँ, यह संभव है। क्या यह वास्तव में आपका प्रश्न है?
 – 
Mark
22 जुलाई 2018, 20:32
चूंकि chunk एक सरणी देता है, आपको संभवतः concat खंड का परिणाम होना चाहिए यदि आप एक गहरा-नेस्टेड परिणाम नहीं चाहते हैं।
 – 
Mark
22 जुलाई 2018, 20:34
स्पष्ट करना। मेरी समस्या यह थी कि मेरा पुनरावर्ती समाधान निश्चित लंबाई के सरणियों के समतल सरणी के बजाय नेस्टेड सरणियों को लौटाता रहा। समाधान के लिए धन्यवाद।
 – 
Andy
23 जुलाई 2018, 01:25

2 जवाब

अगर मैं आपको सही ढंग से समझ पाया तो आप कुछ इस तरह हासिल करने की कोशिश कर रहे हैं

function chunk(array, size) {
  if (array.length === 0) {
    return array;
  } else {
    return [array.slice(0, size)].concat(chunk(array.slice(size),size));
  }
}
0
Boban Stanojevic 22 जुलाई 2018, 20:44

आपका फ़ंक्शन पहले खंडित सरणी के साथ एक सरणी देता है और फिर प्रत्येक आगे के खंड के लिए नेस्टेड सरणी देता है।

return [array.slice(0, size), chunk(array.slice(size), size)];
                              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

उल्लिखित भाग को एक सरणी स्तर उठाने की आवश्यकता है। यह स्प्रेड सिंटैक्स { के इस्तेमाल से किया जा सकता है chunk के सामने ...

function chunk(array, size) {
    return array.length
        ? [array.slice(0, size), ...chunk(array.slice(size), size)]
        : [];
}

console.log(chunk([1, 2, 3, 4, 5, 6, 7, 8], 3));
.as-console-wrapper { max-height: 100% !important; top: 0; }
0
Nina Scholz 22 जुलाई 2018, 20:45