Нужно написать функцию на JS, которая через рекурсию будет выводить сумму цифр в числе
Нужно написать функцию на JS, которая через рекурсию будет выводить сумму цифр в числе.
Ответы (3 шт):
function indexSum(n) {
n = `${n}`;
if (n.length === 1) {
return +n;
}
result = +n[0] + indexSum(n.slice(1));
if (result > 10) {
indexSum(n - 1);
}
return result;
}
console.log(indexSum(Math.floor(Math.random() * 50)));
Шаблонной строкой мы преобразуем число в строку, а потом через +n опять в число. Через срез отбрасываем символ
Если не извращаться со строками, то, например, так:
function digitSum(n) {
if (n < 10)
return n;
return n % 10 + digitSum(Math.floor(n / 10));
}
P.S. Если подать на вход отрицательное число, то работать не будет, поэтому с отрицательными числами не забывайте использовать модуль.
P.P.S. Дробные вообще не суйте сюда, либо домножайте их на 10, пока они не станут целыми.
Ну или если извращаться и немного усложнить то можно и не думать о вещественных.
function sumDigits(n) {
n = n|0;
return n<10 ? n: n%10 + sumDigits(n/10);
}
Отрывок отсюда
JavaScript Uses 32 bits Bitwise Operands JavaScript stores numbers as 64 bits floating point numbers, but all bitwise operations are performed on 32 bits binary numbers.
Before a bitwise operation is performed, JavaScript converts numbers to 32 bits signed integers.
After the bitwise operation is performed, the result is converted back to 64 bits JavaScript numbers.