Как создать массив с помощью рекурсии, указав минимальное и максимальное значения в JavaScript - PullRequest
1 голос
/ 18 марта 2020

Вот вызов:

Мы определили функцию с именем rangeOfNumbers с двумя параметрами. Функция должна возвращать массив целых чисел, который начинается с числа, представленного параметром startNum, и заканчивается числом, представленным параметром endNum. Начальный номер всегда будет меньше или равен конечному номеру. Ваша функция должна использовать рекурсию, вызывая себя, и не использовать циклы любого рода. Это также должно работать для случаев, когда startNum и endNum одинаковы.

function rangeOfNumbers(startNum, endNum) {

}
rangeOfNumbers(5, 10); //Should return [5, 6, 7, 8, 9, 10]

Существует ли простой способ решения этой проблемы в одну строку? Я борюсь с тем, как обработать базовый случай и вернуть нужный массив с помощью рекурсии.

Ответы [ 2 ]

4 голосов
/ 18 марта 2020

function rangeOfNumbers(startNum, endNum) {
  return startNum <= endNum ? [startNum].concat(rangeOfNumbers(startNum+1, endNum)) : []
}
console.log(rangeOfNumbers(5, 10));
2 голосов
/ 18 марта 2020

Вот еще один способ использования синтаксиса распространения -

const range = (a, b) =>
  a > b
    ? []
    : [ a, ...range(a + 1, b) ]
    
console.log(range(1, 5))
// [ 1, 2, 3, 4, 5 ]

console.log(range(3, 6))
// [ 3, 4, 5, 6 ]

console.log(range(9, 3))
// []
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...