@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))
  • Вопрос задан
  • 100 просмотров
Пригласить эксперта
Ответы на вопрос 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));
Ответ написан
Ваш ответ на вопрос

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

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