freeCodeCamp/guide/russian/certifications/javascript-algorithms-and-d.../intermediate-algorithm-scri.../sum-all-odd-fibonacci-numbers/index.md

7.8 KiB
Raw Blame History

title localeTitle
Sum All Odd Fibonacci Numbers Сумма всех нечетных чисел Фибоначчи

:triangular_flag_on_post: Не забудьте использовать Read-Search-Ask если вы застряли. Попробуйте подключить программу :busts_in_silhouette: и напишите свой собственный код :pencil:

:checkered_flag: Проблема Объяснение:

Вам нужно будет собрать все числа Фибоначчи, а затем проверить нечетные. Как только вы получите нечетные, вы добавите их все. Последним номером должно быть число, заданное как параметр, если оно фактически является выключенным числом Фибоначчи.

Связанные ссылки

:speech_balloon: Подсказка: 1

Чтобы получить следующий номер серии, вам нужно добавить текущий к предыдущему, и это даст вам следующий.

попытаться решить проблему сейчас

:speech_balloon: Подсказка: 2

Чтобы проверить, действительно ли номер, все, что вам нужно проверить, это number % 2 == 0 .

попытаться решить проблему сейчас

:speech_balloon: Подсказка: 3

Когда вы получите следующий нечетный, не забудьте добавить его в глобальную переменную, которая может быть возвращена в конце. result += currNumber; будет делать трюк.

попытаться решить проблему сейчас

Осторожно, спойлеры!

предупреждающий знак

Решение впереди!

:beginner: Решение базового кода:

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); 

:rocket: Код запуска

Код Объяснение:

  • Создайте переменную, чтобы вести запись текущего и предыдущего номеров вместе с результатом, который будет возвращен.
  • Используйте цикл while, чтобы убедиться, что мы не переходим через число, указанное как параметр.
  • Мы используем операнд по модулю, чтобы проверить, является ли текущий номер нечетным или четным. Если он четный, добавьте его в результат.
  • Завершите круг Фибоначчи, повернув следующий номер и меняя значения.
  • Верните результат.

Связанные ссылки

  • JS while Loop

:sunflower: Решение промежуточного кода:

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); 

:rocket: Код запуска

Код Объяснение:

  • Создайте массив чисел фибоначчи до num .
  • Используйте метод reduce() чтобы найти сумму нечетных элементов массива.
  • Верните сумму.

Связанные ссылки

:clipboard: ПРИМЕЧАНИЯ ДЛЯ ВЗНОСОВ:

  • :warning: НЕ добавляйте решения, похожие на любые существующие решения. Если вы считаете, что это похоже, но лучше , попробуйте объединить (или заменить) существующее подобное решение.
  • Добавьте объяснение своего решения.
  • Классифицируйте решение в одной из следующих категорий - Basic , Intermediate и Advanced . :traffic_light:
  • Пожалуйста, добавьте свое имя пользователя, только если вы добавили соответствующее основное содержимое . ( :warning: НЕ удаляйте существующие имена пользователей )

Увидеть :point_right: Wiki Challenge Solution Template для Wiki Challenge Solution Template для справки.