diff --git a/curriculum/challenges/english/08-coding-interview-prep/project-euler/problem-2-even-fibonacci-numbers.english.md b/curriculum/challenges/english/08-coding-interview-prep/project-euler/problem-2-even-fibonacci-numbers.english.md index d419108c59..4a8daef274 100644 --- a/curriculum/challenges/english/08-coding-interview-prep/project-euler/problem-2-even-fibonacci-numbers.english.md +++ b/curriculum/challenges/english/08-coding-interview-prep/project-euler/problem-2-even-fibonacci-numbers.english.md @@ -8,7 +8,7 @@ title: 'Problem 2: Even Fibonacci Numbers'
Each new term in the Fibonacci sequence is generated by adding the previous two terms. By starting with 1 and 2, the first 10 terms will be:
1, 2, 3, 5, 8, 13, 21, 34, 55, 89, ...
-By considering the terms in the Fibonacci sequence whose values do not exceed nth term, find the sum of the even-valued terms. +By considering the terms in the Fibonacci sequence that do not exceed the nth term, find the sum of the even-valued terms.
## Instructions @@ -21,16 +21,16 @@ By considering the terms in the Fibonacci sequence whose values do not exceed fiboEvenSum(10) should return 188. - testString: assert.strictEqual(fiboEvenSum(10), 188, 'fiboEvenSum(10) should return 188.'); + - text: fiboEvenSum(10) should return 44. + testString: assert.strictEqual(fiboEvenSum(10), 44, 'fiboEvenSum(10) should return 44.'); + - text: fiboEvenSum(18) should return 3382. + testString: assert.strictEqual(fiboEvenSum(18), 3382, 'fiboEvenSum(18) should return 3382.'); - text: fiboEvenSum(23) should return 60696. testString: assert.strictEqual(fiboEvenSum(23), 60696, 'fiboEvenSum(23) should return 60696.'); - - text: fiboEvenSum(43) should return 1485607536. - testString: assert.strictEqual(fiboEvenSum(43), 1485607536, 'fiboEvenSum(43) should return 1485607536.'); - - text: Your function is not returning the correct result using our tests values. - testString: assert.strictEqual(fiboEvenSum(18), 3382, 'Your function is not returning the correct result using our tests values.'); + - text: fiboEvenSum(43) should return 350704366. + testString: assert.strictEqual(fiboEvenSum(43), 350704366, 'fiboEvenSum(43) should return 350704366.'); - text: Your function should return an even value. - testString: assert.equal(fiboEvenSum(31) % 2 === 0, true, 'Your function should return an even value.'); + testString: assert.equal(fiboEvenSum(10) % 2 === 0, true, 'Your function should return an even value.'); ``` @@ -62,18 +62,20 @@ fiboEvenSum(10); ```js const fiboEvenSum = (number) => { - let temp, sum = 0, a = 0, b = 1; - while (number >= 0) { - temp = a; - a = b; - b += temp; - number --; - if ((b % 2) === 0) { - sum += b; + if (number <= 1) { + return 0; + } else { + let evenSum = 2, first = 1, second = 2, fibNum; // According to problem description our Fibonacci series starts with 1, 2 + for (let i = 3; i <= number; i++) { + fibNum = first + second; + first = second; + second = fibNum; + if (fibNum % 2 == 0) { + evenSum += fibNum; + } } - } - - return sum; + return evenSum; + } } ```