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

Как остановить рекурсию возврата функции?

Рекурсивная функция должна накапливать числа в массив и вызываться дополнительными скобками (как на примере ниже). Нужно, чтобы функция вернула массив args. Это значит, что надо придумать условие для выхода из рекурсии. Не могу придумать как.
function curry(...args) {
  return (num) => curry(...args, num)
}
curry(2)(8)(5)  // вернёт function, а должно быть [2, 8, 5]
curry(1)(0)(9)(3)(12)  // вернёт function, а должно быть [1, 0, 9, 3, 12]
  • Вопрос задан
  • 176 просмотров
Подписаться 1 Простой Комментировать
Помогут разобраться в теме Все курсы
  • Skillbox
    JavaScript
    3 месяца
    Далее
  • Яндекс Практикум
    Фронтенд-разработчик расширенный
    13 месяцев
    Далее
  • Академия Eduson
    Fullstack-разработчик на JavaScript
    11 месяцев
    Далее
Решения вопроса 2
Seasle
@Seasle Куратор тега JavaScript
Для каррирования необходима функция с фиксированным количеством аргументов.

Функцию, которая использует остаточные параметры, типа f(...args), так каррировать не получится.

Источник.
Ответ написан
0xD34F
@0xD34F Куратор тега JavaScript
Нет аргументов - нет рекурсивного вызова:

const xxx = (() => {
  function f() {
    return arguments.length ? f.bind([].concat.apply(this, arguments)) : this;
  }

  return f.bind([]);
})();

// или

const xxx = (...args1) => (...args2) =>
  args2.length
    ? xxx(...args1, ...args2)
    : args1;

xxx(1, 2)(3, 4)() // [1, 2, 3, 4]

const t = xxx(1, 3, 5);
t(7)() // [1, 3, 5, 7]
t(3)(1)() // [1, 3, 5, 3, 1]
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

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

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