हमें एक फ़ंक्शन बनाना है जो किसी भी संख्या में आर्गुमेंट (नंबर लिटरल्स) लेता है, उन्हें एक साथ जोड़ता है, और जब उत्तर केवल 1 अंक लंबा होता है तो अंकों का गुणनफल लौटाता है।
उदाहरण के लिए -
यदि आर्गुमेंट हैं -
16, 34, 42
हमें पहले उन्हें एक साथ जोड़ना होगा -
16+34+42 = 92
और फिर अंकों को एक साथ तब तक गुणा करते रहें जब तक हमें 1-अंक की संख्या न मिल जाए जैसे -
9*2 = 18 1*8 = 8
जब हमें एक अंक की संख्या मिल जाती है, तो हमें इसे अपने फ़ंक्शन से लौटाना होगा।
हम इसे दो फ़ंक्शन में विभाजित करेंगे -
एक फ़ंक्शन एक नंबर स्वीकार करता है और उसके अंकों का गुणनफल लौटाता है, हम ऐसा करने के लिए रिकर्सन का उपयोग करेंगे, आइए इस पहले फ़ंक्शन को product() कहते हैं।
दूसरा फ़ंक्शन रिकर्सिवली इस product() फ़ंक्शन को कॉल करता है और जांचता है कि क्या गुणनफल 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