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

Рекурсивная функция в условии if возвращает return как undefined, как исправить?

Если выводить результат через консоль перед return, выводит правильный результат. Что только не перепробовал, как не менял код, куда только не ставил return, одно и тоже

function persistence(num) {
    let arr = num.toString().split('');
    let count = 1;
      let res = arr.map(i => {
      count = i * count;
      return count
      })
      if (res[res.length-1] > 9){
      persistence(res[res.length-1])
      } else {
        return res[res.length-1]
      }
}
console.log(persistence(999))
  • Вопрос задан
  • 148 просмотров
Подписаться 1 Простой 5 комментариев
Помогут разобраться в теме Все курсы
  • Яндекс Практикум
    Фронтенд-разработчик
    10 месяцев
    Далее
  • Skillbox
    JavaScript
    3 месяца
    Далее
  • Нетология
    Fullstack-разработчик на Python + нейросети
    20 месяцев
    Далее
Пригласить эксперта
Ответы на вопрос 1
MRoose
@MRoose
Застал эпоху исчезновения 3.5 мм mini-jack
При вызове самой себя отсутствует return, что провоцирует новый вызов функции, но связь между вызовами потеряна. Функция выполнится где-то в памяти и возможно еще n-раз вызовет себя, но результат вычислений никто не ждет.
И советую немного форматировать код)

let persistence = (num) => {
    let count = 1;

    let res = num
        .toString()
        .split('')
        .map(i => count *= Number(i));

    if (res[res.length - 1] > 9) {
        return persistence(res[res.length - 1]);
    }

    return res[res.length - 1];
}

console.log(persistence(999));
Ответ написан
Ваш ответ на вопрос

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

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