* Fix code not passing on challenge tests The code was not passing the challenge tests because we must sum only odd numbers. Cince we didn't provided an initial value for reduce, it would use the first element of the array, and if it was an odd number, it would skip our validation and add it to the final result. [https://www.freecodecamp.org/forum/t/sum-all-odd-fibonacci-numbers-solution-not-passing-all-tests/236058](https://www.freecodecamp.org/forum/t/sum-all-odd-fibonacci-numbers-solution-not-passing-all-tests/236058) * Same English fixed for Arabic * Same English fix for Chinese * Same English fix for Portuguese * Same English fix for Russian * Same English fix for Spanish
7.8 KiB
title, localeTitle
title | localeTitle |
---|---|
Sum All Odd Fibonacci Numbers | Сумма всех нечетных чисел Фибоначчи |
Не забудьте использовать
Read-Search-Ask
если вы застряли. Попробуйте подключить программу и напишите свой собственный код
Проблема Объяснение:
Вам нужно будет собрать все числа Фибоначчи, а затем проверить нечетные. Как только вы получите нечетные, вы добавите их все. Последним номером должно быть число, заданное как параметр, если оно фактически является выключенным числом Фибоначчи.
Связанные ссылки
Подсказка: 1
Чтобы получить следующий номер серии, вам нужно добавить текущий к предыдущему, и это даст вам следующий.
попытаться решить проблему сейчас
Подсказка: 2
Чтобы проверить, действительно ли номер, все, что вам нужно проверить, это number % 2 == 0
.
попытаться решить проблему сейчас
Подсказка: 3
Когда вы получите следующий нечетный, не забудьте добавить его в глобальную переменную, которая может быть возвращена в конце. result += currNumber;
будет делать трюк.
попытаться решить проблему сейчас
Осторожно, спойлеры!
Решение впереди!
Решение базового кода:
function sumFibs(num) {
var prevNumber = 0;
var currNumber = 1;
var result = 0;
while (currNumber <= num) {
if (currNumber % 2 !== 0) {
result += currNumber;
}
currNumber += prevNumber;
prevNumber = currNumber - prevNumber;
}
return result;
}
// test here
sumFibs(4);
Код Объяснение:
- Создайте переменную, чтобы вести запись текущего и предыдущего номеров вместе с результатом, который будет возвращен.
- Используйте цикл while, чтобы убедиться, что мы не переходим через число, указанное как параметр.
- Мы используем операнд по модулю, чтобы проверить, является ли текущий номер нечетным или четным. Если он четный, добавьте его в результат.
- Завершите круг Фибоначчи, повернув следующий номер и меняя значения.
- Верните результат.
Связанные ссылки
- JS while Loop
Решение промежуточного кода:
function sumFibs(num) {
// Perform checks for the validity of the input
if (num < 0) return -1;
if (num === 0 || num === 1) return 1;
// Create an array of fib numbers till num
const arrFib = [1, 1];
let nextFib = 0;
// We put the new Fibonacci numbers to the front so we
// don't need to calculate the length of the array on each
// iteration
while((nextFib = arrFib[0] + arrFib[1]) <= num) {
arrFib.unshift(nextFib);
}
// Sum only the odd numbers and return the value
return arrFib.reduce((acc, curr) => {
return acc + curr * (curr % 2);
}, 0);
}
// test here
sumFibs(4);
Код Объяснение:
- Создайте массив чисел фибоначчи до num .
- Используйте метод
reduce()
чтобы найти сумму нечетных элементов массива. - Верните сумму.
Связанные ссылки
ПРИМЕЧАНИЯ ДЛЯ ВЗНОСОВ:
НЕ добавляйте решения, похожие на любые существующие решения. Если вы считаете, что это похоже, но лучше , попробуйте объединить (или заменить) существующее подобное решение.
- Добавьте объяснение своего решения.
- Классифицируйте решение в одной из следующих категорий - Basic , Intermediate и Advanced .
- Пожалуйста, добавьте свое имя пользователя, только если вы добавили соответствующее основное содержимое . (
НЕ удаляйте существующие имена пользователей )
Увидеть
![]()
Wiki Challenge Solution Template
дляWiki Challenge Solution Template
для справки.