7.8 KiB
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);
});
}
// test here
sumFibs(4);
Код Объяснение:
- Создайте массив чисел фибоначчи до num .
- Используйте метод
reduce()
чтобы найти сумму нечетных элементов массива. - Верните сумму.
Связанные ссылки
ПРИМЕЧАНИЯ ДЛЯ ВЗНОСОВ:
- НЕ добавляйте решения, похожие на любые существующие решения. Если вы считаете, что это похоже, но лучше , попробуйте объединить (или заменить) существующее подобное решение.
- Добавьте объяснение своего решения.
- Классифицируйте решение в одной из следующих категорий - Basic , Intermediate и Advanced .
- Пожалуйста, добавьте свое имя пользователя, только если вы добавили соответствующее основное содержимое . ( НЕ удаляйте существующие имена пользователей )
Увидеть
Wiki Challenge Solution Template
дляWiki Challenge Solution Template
для справки.