Вопрос №3040 от пользователя Sergey Margasov в уроке «Типы данных», курс «Основы программирования»

Sergey Margasov

не до конца понял решение учителя в этом задании, а именно условия с 10-кой. хочу запостить свой вариант и только для того, чтобы спросить возможно ли лучше и как (действительно интересно)?

export const addDigits = (num) => {

const sum = (num) => {
    let str = String(num);
    if (strings.length(str) < 2) {
      return num;
    }
    num = 0;
    for (let i = 0; i < strings.length(str); i++) {
      num += Number(str[i]);
    }
    return sum(num);
  };

  return sum(num);
};
2 1

Kirill Mokevnin

Я чуть-чуть поправил свое решение и убрал лишний код.

Ваше решение опирается на длину строки, мое на проверку что число меньше 10. По сути это приводит к одинаковому результату.

Еще у вас получился микс из рекурсии + цикл. Желательно так код не смешивать. Он сложнее воспринимается. Это смотрелось бы хорошо, если бы вынесли суммирование цифр в отдельную функцию, как это сделано у меня.

Из плохого/странного:

У вас зачем то внутри определяется функция sum, хотя никакого смысла в этом нет, можно так же напрямую дергать addDigits.

num = 0; - вы изменяете формальный параметр, это очень плохая практика. Посмотрите как это сделано в моем решении. А так же посмотрите правило в eslint: http://eslint.org/docs/rules/no-param-reassign

2

Sergey Margasov

спасибо, очень ценные замечания. просто у меня опыта можно сказать ноль.

0

Используйте Хекслет по максимуму!

  • Задавайте вопросы по уроку
  • Проверяйте знания в квизах
  • Проходите практику прямо в браузере
  • Отслеживайте свой прогресс

Зарегистрируйтесь или войдите в свой аккаунт

Даю согласие на обработку персональных данных, соглашаюсь с «Политикой конфиденциальности» и «Условиями оказания услуг»

Рекомендуемые программы

С нуля до разработчика. Возвращаем деньги, если не удалось найти работу.

Иконка программы Фронтенд-разработчик
Профессия
Разработка фронтенд-компонентов веб-приложений
25 мая 10 месяцев
Иконка программы Python-разработчик
Профессия
Разработка веб-приложений на Django
25 мая 10 месяцев
Иконка программы PHP-разработчик
Профессия
Разработка веб-приложений на Laravel
25 мая 10 месяцев
Иконка программы Node.js-разработчик
Профессия
Разработка бэкенд-компонентов веб-приложений
25 мая 10 месяцев
Иконка программы Fullstack-разработчик
Профессия
Новый
Разработка фронтенд и бэкенд компонентов веб-приложений
25 мая 16 месяцев
Иконка программы Верстальщик
Профессия
Вёрстка с использованием последних стандартов CSS
в любое время 5 месяцев
Иконка программы Java-разработчик
Профессия
Разработка приложений на языке Java
25 мая 10 месяцев
Иконка программы Разработчик на Ruby on Rails
Профессия
Создает веб-приложения со скоростью света
25 мая 5 месяцев