Напишите функцию, которая возвращает ряд Фибоначчи до определенного числа. Нельзя использовать let и var, только const
Пример работы функции
fibonacci(8);
Вывод: [0,1,1,2,3,5]
Нашел как генерировать ряд фибоначчи методами массива:
const fibonacci = n =>
Array.from({ length: n }).reduce(
(acc, val, i) => acc.concat(i > 1 ? acc[i - 1] + acc[i - 2] : i),
[]
);
Но не могу понять как генерировать ряд до числа не большего поступающему в функцию без применения let и var.
Ответы (2 шт):
Автор решения: Konstantin Modin
→ Ссылка
Можно сделать примерно так:
const fib = (
lim,
res = [0, 1],
next = res.slice(-2).reduce((a, b) => a + b)
) => {
return lim < next ? res : fib(lim, [...res, next]);
};
console.log(`fib(6)`, fib(6));
console.log(`fib(10)`, fib(10));
console.log(`fib(20)`, fib(20));
Автор решения: vsemozhebuty
→ Ссылка
Вариант без рекурсии:
function fibonacci(limit) {
if (limit <= 0) return [];
if (limit === 1 ) return [0];
const result = [0, 1];
while (true) {
const sum = result[result.length - 2] + result[result.length - 1];
if (sum >= limit) break;
result.push(sum);
}
return result;
}
console.log(fibonacci(0));
console.log(fibonacci(1));
console.log(fibonacci(2));
console.log(fibonacci(8));