আমাদের একটি জাভাস্ক্রিপ্ট ফাংশন লিখতে হবে যা একটি সংখ্যা নেয় এবং বারবার তার ডিজিটগুলোর যোগফল নেবে যতক্ষণ না সেটি একক ডিজিটের সংখ্যায় রূপান্তরিত হয়।
এটি দুটি পদ্ধতিতে সমাধান করব −
পদ্ধতি ১: লুপ ব্যবহার করে
এই সমাধানটি হয়েশ কমাতে while লুপ ব্যবহার করে রিকার্সিভলি সংখ্যা-র ডিজিটগুলো যোগ করে।
উদাহরণ
const num = 123456;
const addDigits = (num = 1) => {
let sum = num;
while(sum % 10 !== sum){
let sum1 = 0;
while(sum > 0){
sum1 += sum % 10;
sum = Math.floor(sum / 10);
}
sum = sum1;
};
return sum;
};
console.log(addDigits(num));
পদ্ধতি ২: কনস্ট্যান্ট টাইম সমাধান (O(1) টাইম কমপ্লেক্সিটি)
এই সমাধানটি গণিতের কনগ্রুয়েন্স ফর্মুলা ব্যবহার করে, পাঠকদের এই ফর্মুলা গবেষণা করার পরামর্শ দেওয়া হয়।
উদাহরণ
const num = 123456;
const addDigits = (num = 1) => {
let predicate = (num - 1) % 9;
return ++predicate;
};
console.log(addDigits(num));
আউটপুট
দুই পদ্ধতির জন্যও কনসোলে আউটপুট হবে −
3