63 lines
2.2 KiB
Markdown
63 lines
2.2 KiB
Markdown
---
|
||
title: Even Fibonacci Numbers
|
||
localeTitle: Даже номера Фибоначчи
|
||
---
|
||
## Проблема 2: Даже числа Фибоначчи
|
||
|
||
### Метод:
|
||
|
||
* Последовательность фибоначчи представляет собой последовательность, где `fib(n) = fib(n-1) + fib(n-1)` .
|
||
|
||
* В этой задаче мы должны суммировать все четные числа до `nth` члена в последовательности.
|
||
|
||
* Пример для `fiboEvenSum(10)` :
|
||
|
||
* Последовательность до 10-го срока: 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144
|
||
|
||
* Сумма всех четных чисел в приведенной выше последовательности: 2 + 8 + 34 + 144 = 188
|
||
|
||
|
||
### Решение:
|
||
|
||
#### Основное решение - Итеративный:
|
||
|
||
```js
|
||
function fiboEvenSum(n) {
|
||
let first = 1, second = 2, sum = 2, fibNum; // declaring and initializing variables
|
||
if (n <= 1) return sum; // edge case
|
||
for (let i = 2; i <= n; i++){ // looping till n
|
||
fibNum = first + second; // getting the ith fibonacci number
|
||
first = second;
|
||
second = fibNum;
|
||
if (fibNum%2 == 0) sum+=fibNum; // If even add to the sum variable
|
||
}
|
||
return sum;
|
||
}
|
||
```
|
||
|
||
#### Расширенное решение - Рекурсивное:
|
||
|
||
```js
|
||
// We use memoization technique to save ith fibonacci number to the fib array
|
||
function fiboEvenSum(n){
|
||
const fib = [1, 2];
|
||
let sumEven = fib[1];
|
||
function fibonacci(n){
|
||
if (n <= 1) return fib[n]; // base condition
|
||
else if (fib[n]) return fib[n]; // if the number exists in the array we cache it and return
|
||
else {
|
||
fib[n] = fibonacci(n-1) + fibonacci(n-2); // otherwise calculcate and save it to the array
|
||
if (fib[n]%2 == 0) sumEven+=fib[n]; //if the number is even, add it to the sumEven variable
|
||
return fib[n];
|
||
}
|
||
}
|
||
fibonacci(n); // run the recursive function
|
||
return sumEven;
|
||
}
|
||
```
|
||
|
||
* [Код запуска](https://repl.it/@ezioda004/Project-Euler-Problem-2-Even-Fibonacci-Numbers)
|
||
|
||
### Рекомендации:
|
||
|
||
* [Википедия](https://en.wikipedia.org/wiki/Fibonacci_number) |