Задача из codewars на digital root. Выдаёт правильный результат, но не засчитывает решение
Есть задача на codewars: Digital root is the recursive sum of all the digits in a number. Given n, take the sum of the digits of n. If that value has more than one digit, continue reducing in this way until a single-digit number is produced. The input will be a non-negative integer.
Я решил её таким кодом:
function digitalRoot(n) {
n = n.toString().split('').map((num) => Number(num));
n = n.reduce((previous, current) => previous + current, 0);
/* console.log(n); */
if (n < 10) {
return n;
} else if (n >= 10) {
digitalRoot(n);
}
}
digitalRoot(16);
console.log('------');
digitalRoot(942);
console.log('------');
digitalRoot(132189);
console.log('------');
digitalRoot(493193);
Ответы на примеры верные, но задача не засчитывается. Пишет expected undefined to equal 6.
Я заменил if else на ? и всё заработало:
return n > 10 ? digitalRoot(n) : n;
Можете пожалуйста объяснить, где ошибка в if else?
Ответы (1 шт):
Ответ ожидал получить число. Однако при else if (n >= 10) { финальный стек никуда ничего не вернёт (точнее вернёт undefined)... нужен return digitalRoot(n); . В тернарнике это вполне себе происходит.