Files
mrugesh 91df817cfe fix(guide) add stubs, update spellings and prepare for move (#36531)
* fix(guide) add stubs and correct file path misspellings and pr… (#36528)

* fix: corrected file path to match curriculum

* fix: renamed to newer challenge name

* fix: added solutions to articles from challenge files

* fix: added missing .english to file name

* fix: added missing title to guide article

* fix: correct solution for guide article

* fix: replaced stub with hint

* fix: added space in Hint headers

* fix: added solution to guide article

* fix: added solution to guide article

* test: replaced stub with hint and solution

* fix: add Problem number: to title

* fix: changed generatorexponential to correct name

* fix: renamed knight's tour to knights-tour

* fix: updated guide article
2019-07-30 00:25:58 +05:30

1.8 KiB

title
title
Problem 2: Even Fibonacci Numbers

Problem 2: Even Fibonacci Numbers


Problem Explanation

  • A fibonacci sequence is a sequence where fib(n) = fib(n-1) + fib(n-1).
  • In this challenge we have to sum all the even numbers upto nth term in the sequence.
  • Example for fiboEvenSum(10):
    • The sequence till 10th term is: 1, 2, 3, 5, 8, 13, 21, 34, 55, 89

    • Sum of all even number in the above sequence is: 2 + 8 + 34 = 44


Solutions

Solution 1 (Click to Show/Hide)

Iterative

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 = 3; 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;
}
Solution 2 (Click to Show/Hide)

Recursive

// We use memoization technique to save ith fibonacci number to the fib array
function fiboEvenSum(n) {
  const fib = [1, 1, 2];
  let sumEven = fib[2];
  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;
}