Задать вопрос
@mhatikov

Считается ли это рекурсией?

function mainFunc(res) {
    function getDigitsSum(num) {
        num = String(num);
        let result = 0;
            for (var i = 0; i < num.length; i++){
                result += Number(num[i]);
            }
        return result;
    }
    if ( getDigitsSum(res) < 10){
        return getDigitsSum(res);
    }
    return mainFunc(getDigitsSum(res));
}
//для примера число взял 7190
console.log(mainFunc(7190));


Такой вопрос стоял. Написать рекурсивную функцию, которая будет складывать цифры в числе до тех пор, пока не останется, собственно, однозначное число. Я написал это вот так, оно работает и даже правильно :0
Но стоит вопрос в том, рекурсивна ли эта функция?
Максимально глупый вопрос, я понимаю, но если убрать второй return то всё перестаёт работать и код выдает значение 'undefined' если за первую прокрутку не удалось получить сумму цифр менее чем 9. Почему так?
  • Вопрос задан
  • 146 просмотров
Подписаться 1 Простой 1 комментарий
Помогут разобраться в теме Все курсы
  • Яндекс Практикум
    Фронтенд-разработчик
    10 месяцев
    Далее
  • Skillbox
    JavaScript
    3 месяца
    Далее
  • Нетология
    Fullstack-разработчик на Python + нейросети
    20 месяцев
    Далее
Решения вопроса 1
sergiks
@sergiks Куратор тега JavaScript
♬♬
Формально да, является: ведь mainFunc() внутри вызывает саму себя.

При каждом вызове mainFunc() снова и снова определяется ф-я getDigitSum() — зачем, если она не меняется?
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы