Сложение чисел из строки с помощью рекурсии
Всем привет! Помогите решить задачу плиз. Нужно сократить путем сложения в рекурсивной функции числа в строке до одного символа, например '57987'=5+7+9+8+7=36=3+6=9. Пробовал две разные функции, но они обе возвращают двузначное(в данном случае) число, то есть делают один проход и выплевывают результат. Как нужно улучшить код, или нужно написать что-то совершенно иное?
function sum(n) {
if (n < 10) return n;
return (n % 10) + sum(Math.floor(n / 10));
}
console.log(sum(57987));
function sum(n){
n = `${n}`;
if(n.length > 1){
return +n[0] + sum(n.slice(1));
}
return +n;
}
console.log(sum(57987));
Ответы (1 шт):
Автор решения: entithat
→ Ссылка
Алгоритм такой:
- Из числа делаем строку, суммируем её цыфры.
- Если число больше двух знаков, то делаем это же снова.
function foo(n, sum=0) {
if (n < 10) return n;
for (const d of n+'')
sum += +d;
return foo(sum);
}
console.log(foo(5194));
console.log(foo(57987));