সমস্যা বিবরণ
একটি নম্বর দেওয়া আছে। এর ফ্যাক্টোরিয়াল বের করে তার ডিজিটগুলোর যোগফল রিটার্ন করতে হবে।
উদাহরণ: ৬! = ৭২০ → ডিজিট সমষ্টি = ৭+২+০ = ৯
সমাধান
const factorial = (num) => {
if (num == 1) return 1;
return num * factorial(num - 1);
};
const sumOfDigits = (num = 1) => {
const str = num.toString();
let sum = 0;
for (var x = -1; ++x < str.length;) {
sum += +str[x];
}
return sum;
};
const sumFactorialDigits = num => sumOfDigits(factorial(num));
console.log(sumFactorialDigits(6)); // 9
আউটপুট
9
নোট
- রিকার্সিভ ফ্যাক্টোরিয়াল বড় নম্বরের জন্য স্ট্যাক ওভারফ্লো করতে পারে।
- বড় নম্বরের জন্য বাইজেন্ট বা ইটেরেটিভ পদ্ধতি ভালো।