Как обернуть цикл в функцию?
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 ]