curriculum/challenges/english/blocks/lab-range-of-numbers/5cc0bd7a49b71cb96132e54c.md
In this lab, you will build a rangeOfNumbers function that generates an array of numbers within a specified range.
Examples:
rangeOfNumbers(3, 9) returns [3, 4, 5, 6, 7, 8, 9]rangeOfNumbers(5, 5) returns [5]Requirements:
for, while, Array.from, forEach, map, filter, reduce)Objective: Fulfill the user stories below and get all the tests to pass to complete the lab.
User Stories:
rangeOfNumbers that takes two parameters: startNum and endNum.startNum parameter and ends with the number represented by the endNum parameter (inclusive).startNum will always be less than or equal to the endNum.for, while, Array.from(), or higher-order functions such as forEach, map, filter, or reduce).startNum equals endNum by returning an array containing just that single number.You should have a function named rangeOfNumbers.
assert.isFunction(rangeOfNumbers);
The rangeOfNumbers function should take two parameters.
assert.match(rangeOfNumbers.toString(), /rangeOfNumbers\s*\(\s*\w+\s*,\s*\w+\s*\)/);
Your function should return an array.
assert(Array.isArray(rangeOfNumbers(5, 10)));
Your code should not use any loop syntax (for, while, Array.from() or higher order functions such as forEach, map, filter, or reduce).
assert(
!__helpers.removeJSComments(code).match(/for|while|forEach|map|filter|reduce|Array\.from/g)
);
rangeOfNumbers should use recursion (call itself) to solve this challenge.
assert.isAtLeast(
__helpers.removeJSComments(rangeOfNumbers.toString()).match(/rangeOfNumbers\s*\(.+\)/g)?.length,
2
);
rangeOfNumbers(1, 5) should return [1, 2, 3, 4, 5].
assert.deepStrictEqual(rangeOfNumbers(1, 5), [1, 2, 3, 4, 5]);
rangeOfNumbers(6, 9) should return [6, 7, 8, 9].
assert.deepStrictEqual(rangeOfNumbers(6, 9), [6, 7, 8, 9]);
rangeOfNumbers(4, 4) should return [4].
assert.deepStrictEqual(rangeOfNumbers(4, 4), [4]);
rangeOfNumbers(10, 15) should return [10, 11, 12, 13, 14, 15].
assert.deepStrictEqual(rangeOfNumbers(10, 15), [10, 11, 12, 13, 14, 15]);
rangeOfNumbers(2, 8) should return [2, 3, 4, 5, 6, 7, 8].
assert.deepStrictEqual(rangeOfNumbers(2, 8), [2, 3, 4, 5, 6, 7, 8]);
Global variables should not be used to cache the array.
rangeOfNumbers(1, 3);
assert.deepStrictEqual(rangeOfNumbers(6, 9), [6, 7, 8, 9]);
function rangeOfNumbers(startNum, endNum) {
if (endNum - startNum === 0) {
return [startNum];
} else {
const numbers = rangeOfNumbers(startNum, endNum - 1);
numbers.push(endNum);
return numbers;
}
}