हमें एक ऐसा फ़ंक्शन बनाना है जो किसी भी संख्या में तर्क (संख्या शाब्दिक) लेता है, उन्हें एक साथ जोड़ता है, और जब उत्तर केवल 1 अंक लंबा होता है तो अंकों का उत्पाद लौटाता है।
उदाहरण के लिए -
यदि तर्क हैं -
16, 34, 42
हमें पहले उन्हें एक साथ जोड़ना होगा -
16+34+42 = 92
और फिर अंकों को एक साथ गुणा करते रहें जब तक कि हमें इस तरह की 1-अंकीय संख्या न मिल जाए -
9*2 = 18 1*8 = 8
जब हमें एक अंक की संख्या मिलती है, तो हमें इसे अपने फ़ंक्शन से वापस करना होता है।
हम इसे दो कार्यों में विभाजित करेंगे -
-
एक फ़ंक्शन किसी संख्या को स्वीकार करता है और उसके अंकों का उत्पाद लौटाता है, हम ऐसा करने के लिए रिकर्सन का उपयोग करेंगे, आइए इस पहले फ़ंक्शन को उत्पाद () कहते हैं।
-
दूसरा फ़ंक्शन इस उत्पाद () फ़ंक्शन को पुनरावर्ती रूप से कॉल करता है और जांचता है कि क्या उत्पाद 1 अंक का होता है, यह उत्पाद को वापस कर देता है अन्यथा यह पुनरावृत्त होता रहता है।
इस पूरी कार्यक्षमता के लिए कोड होगा -
उदाहरण
const recursiveMuliSum = (...numbers) => { const add = (a) => a.length === 1 ? a[0] : a.reduce((acc, val) => acc+val); const produce = (n, p = 1) => { if(n){ return produce(Math.floor(n/10), p*(n%10)); }; return p; }; const res = produce(add(numbers)); if(res > 9){ return recursiveMuliSum(res); } return res; }; console.log(recursiveMuliSum(16, 28)); console.log(recursiveMuliSum(16, 28, 44, 76, 11)); console.log(recursiveMuliSum(1, 2, 4, 6, 8));
आउटपुट
कंसोल में आउटपुट होगा -
6 5 2