Вопрос №3040 от пользователя 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);
};
Я чуть-чуть поправил свое решение и убрал лишний код.
Ваше решение опирается на длину строки, мое на проверку что число меньше 10. По сути это приводит к одинаковому результату.
Еще у вас получился микс из рекурсии + цикл. Желательно так код не смешивать. Он сложнее воспринимается. Это смотрелось бы хорошо, если бы вынесли суммирование цифр в отдельную функцию, как это сделано у меня.
Из плохого/странного:
У вас зачем то внутри определяется функция sum
, хотя никакого смысла в этом нет, можно так же напрямую дергать addDigits
.
num = 0;
- вы изменяете формальный параметр, это очень плохая практика. Посмотрите как это сделано в моем решении. А так же посмотрите правило в eslint: http://eslint.org/docs/rules/no-param-reassign
спасибо, очень ценные замечания. просто у меня опыта можно сказать ноль.
Используйте Хекслет по максимуму!
- Задавайте вопросы по уроку
- Проверяйте знания в квизах
- Проходите практику прямо в браузере
- Отслеживайте свой прогресс
Зарегистрируйтесь или войдите в свой аккаунт
С нуля до разработчика. Возвращаем деньги, если не удалось найти работу.







