We are required to write a JavaScript function that in a number and repeatedly sums its digit until it converses to a single digit number.
We will solve this problem by two methods −
Method 1: Using loops
This solution makes use of the while loops to recursively add up the digits of the number.
Example
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));
Method 2: Using a constant time solution (O(1) time complexity)
This solution makes use of the Congruence formula of Mathematics, and readers are advised to explore this formula for a better understanding of this solution.
Example
const num = 123456; const addDigits = (num = 1) => { let predicate = (num - 1) % 9; return ++predicate; }; console.log(addDigits(num));
Output
And the output in the console for both methods will be −
3