Функция некорректно считает числа Фибоначчи
Задача:реализовать функцию, которая при каждом вызове будет выводить следующее число Фибоначчи. Ограничение: в скрипте не должно быть глобальных переменных; разрешено только две функции. Мой код пропускает первые два элемента и как-то странно применяет цикл: при увеличении значения i считает элементы с шагом i. Где ошибка?
function makeFibonacciFunction() {
let nOne = 1;
let nTwo = 1;
function currentResult() {
let nCurrent;
for (let i = 0; i < 1; i++) {
nCurrent = nOne + nTwo;
nOne = nTwo;
nTwo = nCurrent;
}
return nCurrent;
}
return currentResult;
}
const fibonacci = makeFibonacciFunction();
console.log(fibonacci()); // Вывод в консоль: 1
console.log(fibonacci()); // Вывод в консоль: 1
console.log(fibonacci()); // Вывод в консоль: 2
console.log(fibonacci()); // Вывод в консоль: 3
console.log(fibonacci()); // Вывод в консоль: 5
Ответы (2 шт):
Автор решения: MBo
→ Ссылка
Уберите цикл вообще.
Возвращайте значение nOne, которое было на входе в функцию
nCurrent = nOne
nOne = nTwo
nTwo = nTwo + nCurrent
return nCurrent