Reputation: 22723
Here is my code, why it is returning 13 in place of 4:
const superNumber = (n) => {
let nums = n.toString().split('').map(Number);
let sum = parseInt(nums.reduce((x, y)=> x + y));
console.log('Nums: ',nums, 'Sum: ', sum);
if(sum > 9) {
superNumber(sum);
}
return sum;
}
let result = superNumber(148);
console.log('Ans: ', result);
Here is the console log:
Upvotes: 1
Views: 78
Reputation: 19485
You forgot a return
there:
if (sum > 9)
return superNumber(sum);
// ^^^^^^ here you forgot to return
const superNumber = (n) => {
let nums = n.toString().split('').map(Number);
let sum = parseInt(nums.reduce((x, y) => x + y));
console.log('Nums:', nums.toString(), ' Sum:', sum);
if (sum > 9) {
return superNumber(sum);
}
return sum;
}
let result = superNumber(148);
console.log('Ans: ', result);
Upvotes: 3
Reputation: 22265
if you don't want to mess up with the return...
const superNumber = n =>
{
let
nums = Array.from(n.toString(10))
, sum = nums.reduce((s,v) => s + +v, 0)
;
console.log( 'Nums: ', ...nums, ' , Sum: ', sum );
return (sum < 10) ? sum : superNumber(sum);
}
console.log('Ans: ', superNumber(148));
Upvotes: 0