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

for (let i = 2; i < 10; i += 2)

Нужно создать функцию которая принимает 3 аргумента: минимальное значение, максимальное, шаг. И выводит диапазон чисел с определенным шагом. Например 2 10 2 = [2, 4, 6, 8]. Цикл могу составить, но как это в функцию обернуть?


Ответы (2 шт):

Автор решения: Алексей Белкин

@Webexplorer, пожалуйста:

<script language="JavaScript">
 function showMessage(start, stop, step) {
    for (i = start; i < stop; i +=step) 
           {
        document.write(i , ' ');
           }
          }
 showMessage(2, 10, 2);
 </script>
→ Ссылка
Автор решения: Aleksandr Belous

3 способа решения задачи: простой через встроенные циклы, замыканием через рекурсивный вызов и замыканием через итеративный вызов.

const fooWithFor = (min, max, step) => {
  const result = [];
  for (let i = min; i < max; i += step) {
    result.push(i);
  }
  return result;
};

const fooWithRecursion = ((result = []) => (min, max, step) => {
  result.push(min);

  if (min + step < max) {
    return fooWithRecursion(min + step, max, step);
  }
  return result;
})();

const fooWithIter = (min, max, step) => {  
  const iter = (value, max, step, result = []) => {
    result.push(value);

    if (value + step < max) {
      return iter(value + step, max, step);
    }

    return result;
  }

  return iter(min, max, step);
};

console.log(fooWithFor(2, 10, 2)); // [ 2, 4, 6, 8 ]
console.log(fooWithRecursion(2, 10, 2)); // [ 2, 4, 6, 8 ]
console.log(fooWithIter(2, 10, 2)); // [ 2, 4, 6, 8 ]
→ Ссылка