@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. Почему так?
  • Вопрос задан
  • 138 просмотров
Решения вопроса 1
sergiks
@sergiks Куратор тега JavaScript
♬♬
Формально да, является: ведь mainFunc() внутри вызывает саму себя.

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

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

Войти через центр авторизации
Похожие вопросы