আমাদের একটি ফাংশন তৈরি করতে হবে যা যেকোনো সংখ্যক আর্গুমেন্ট (নাম্বার লিটারেল) নিবে, সেগুলো যোগ করবে, এবং যখন উত্তর শুধু ১ ডিজিটের হবে তখন ডিজিটগুলোর গুণফল রিটার্ন করবে।
উদাহরণস্বরূপ -
যদি আর্গুমেন্টগুলো হয় -
16, 34, 42
প্রথমে আমাদের সেগুলো যোগ করতে হবে -
16+34+42 = 92
তারপর ডিজিটগুলো গুণ করে ১ ডিজিট পাওয়া পর্যন্ত চলাতে হবে এইরকম -
9*2 = 18 1*8 = 8
যখন এক ডিজিটের নাম্বার পাওয়া যাবে, তখন সেটি ফাংশন থেকে রিটার্ন করতে হবে।
আমরা এটিকে দুটি ফাংশনে ভাগ করব -
একটি ফাংশন একটি নাম্বার নিবে এবং এর ডিজিটগুলোর গুণফল রিটার্ন করবে, এখানে রিকার্সন ব্যবহার করব, এটিকে নাম দি product()।
দ্বিতীয় ফাংশন রিকার্সিভলি এই product() ফাংশন কল করবে এবং চেক করবে প্রোডাক্ট ১ ডিজিট হয় কিনা, হলে রিটার্ন করবে না হলে চালিয়ে যাবে।
পুরো ফাংশনালিটির কোড হবে -
উদাহরণ
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