संख्याओं की निम्नलिखित सरणी पर विचार करें -
const arr =[10, 5, 6, 12, 7, 1];
प्रत्येक बार में एक कम तत्व लेने वाले इसके क्रमागत तत्वों का योग होगा -
<पूर्व>[10, 5, 6, 12, 7, 1] =10 + 5 + 6 + 12 + 7 + 1 =41; [5, 6, 12, 7, 1] =5 + 6 + 12 + 7 + 1 =31; [6, 12, 7, 1] =6 + 12 + 7 + 1 =26; [12, 7, 1] =12 + 7 + 1 =20; [7, 1] =7 + 1 =8;[1] =1 =1;तो, अंतिम आउटपुट इस तरह की एक सरणी होनी चाहिए -
[ 41, 31, 26, 20, 8, 1 ]
हमें एक ऐसा फ़ंक्शन लिखने की आवश्यकता है जो इस तरह के एक सरणी में लेता है और आंशिक सम सरणी को ऊपर के उदाहरण में दिखाया गया है।
दृष्टिकोण 1:मानचित्र () और कम () का एक साथ उपयोग करना
यहां विचार सरल है, क्योंकि हमें सरणी में प्रत्येक तत्व के लिए एक विशेष तत्व वापस करने की आवश्यकता है, हम Array.prototype.map() विधि का उपयोग कर सकते हैं जो हमारे लिए बिल्कुल यही करता है।
और अगर हम विशेष सूचकांकों की तुलना करके आवश्यक तत्वों के कम योग को वापस करने के लिए मानचित्र () विधि बनाते हैं, तो हम काम पूरा कर लेंगे।
तो, यहाँ ऐसा करने के लिए कोड है -
const arr =[10, 5, 6, 12, 7, 1];const partSum =arr.map((item, index) => {रिटर्न arr.reduce((acc, val, ind) => { वापसी ind>=अनुक्रमणिका ? acc+val :acc; }, 0);});console.log(partSum);
दृष्टिकोण 2:पुनरावर्ती कार्यों का उपयोग करना
यहां हम दो पुनरावर्ती कार्यों का उपयोग करेंगे,
-
सबसे पहले sumRecursively(arr, start) है जो एरर के तत्वों का योग theindex से शुरू होकर बहुत अंत तक देता है।
-
दूसरा है partSumRecursively() जो आवश्यक योग को एक सरणी में पुनरावर्ती रूप से संयोजित करता है और जब हम सरणी के अंत तक पहुंचते हैं, तो यह संयोजित सरणी देता है।
ऐसा करने के लिए कोड होगा -
उदाहरण
const arr =[10, 5, 6, 12, 7, 1]; const sumRecursively =(arr, start =0, res =0) => { if(start{अगर (प्रारंभ <=अंत) {वापसी partSumRecursively (arr, partSum.concat (sumRecursively) एआर, स्टार्ट)), ++ स्टार्ट, एंड); }; वापसी partSum;};console.log(partSumRecursively(arr));
आउटपुट
दोनों विधियों के लिए कंसोल में आउटपुट होगा -
[ 41, 31, 26, 20, 8, 1 ]