Этот вопрос закрыт для ответов, так как повторяет вопрос Как складывать цифры числа, до тех пор пока не получится однозначное значение?
@atsin4469

Почему функция возвращает неверный результат?

Задание
Реализуйте и экспортируйте по умолчанию функцию, которая работает следующим образом:

Дано неотрицательное целое число num. Складывать все входящие в него цифры до тех пор, пока не останется одна цифра.

Для числа 38 процесс будет выглядеть так:

3 + 8 = 11
1 + 1 = 2
Результат: 2

Примеры
addDigits(10); // 1
addDigits(19); // 1
addDigits(38); // 2
addDigits(1259); // 8


Мое решение
const addDigits = (num) => {
  if (String(num).length === 1) {
    return num;
  }

  let result = 0;
  let i = 0;
  const sum = (arg) => arg + Number(String(num)[i]);
  while (i < String(num).length) {
    result = sum(result);
    i += 1
    console.log(result);
  }
  return Number(result);
};

export default addDigits;


Для числа 19 такая ошибка:
Expected: 1
Received: 10


Уже 4–5 часов переписываю решение и сталкиваюсь с новыми ошибками. Терпение закончилось
  • Вопрос задан
  • 403 просмотра
Ответы на вопрос 3
@galaxy
19 -> (1+9) = 10 -> (1+0) = 1
А ты один раз только складываешь. Рекурсивно вызывай свою функцию
Ответ написан
@eandr_67
web-программист (*AMP, Go, JavaScript, вёрстка).
function addDigits(num) {
  while(num >= 10) { num = String(num).split('').reduce((p, c) => p + +c, 0); }
  return num;
}
Ответ написан
@IvanIF
var num = 37; //Исходное число
while (String(num).length != 1){
  var num_A = 0;
  for (var i = 0; i < String(num).length; i++){
    num_A += Number(String(num)[i]);
  }
  num = num_A;
}
document.write(num);
Ответ написан
Ваш ответ на вопрос

Вопрос закрыт для ответов и комментариев

Потому что уже есть похожий вопрос.
Похожие вопросы