nth term, find the sum of the even-valued terms.
+By considering the terms in the Fibonacci sequence whose values do not exceed n, find the sum of the even-valued terms.
```yml
tests:
- - text: fiboEvenSum(10) should return 44.
- testString: assert.strictEqual(fiboEvenSum(10), 44);
- - text: fiboEvenSum(18) should return 3382.
- testString: assert.strictEqual(fiboEvenSum(18), 3382);
- - text: fiboEvenSum(23) should return 60696.
- testString: assert.strictEqual(fiboEvenSum(23), 60696);
- - text: fiboEvenSum(43) should return 350704366.
- testString: assert.strictEqual(fiboEvenSum(43), 350704366);
+ - text: fiboEvenSum(10) should return 10.
+ testString: assert.strictEqual(fiboEvenSum(10), 10);
+ - text: fiboEvenSum(60) should return 44.
+ testString: assert.strictEqual(fiboEvenSum(60), 44);
+ - text: fiboEvenSum(1000) should return 798.
+ testString: assert.strictEqual(fiboEvenSum(1000), 798);
+ - text: fiboEvenSum(100000) should return 60696.
+ testString: assert.strictEqual(fiboEvenSum(100000), 60696);
+ - text: fiboEvenSum(4000000) should return 4613732.
+ testString: assert.strictEqual(fiboEvenSum(4000000), 4613732);
- text: Your function should return an even value.
testString: assert.equal(fiboEvenSum(10) % 2 === 0, true);
@@ -66,16 +68,14 @@ const fiboEvenSum = (number) => {
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;
- }
+ let evenSum = 0, prevFibNum = 1, fibNum = 2; // According to problem description our Fibonacci series starts with 1, 2
+ for (let i = 2; fibNum <= number; i++) {
+ if (fibNum % 2 == 0) {
+ evenSum += fibNum;
}
- return evenSum;
+ [prevFibNum, fibNum] = [fibNum, prevFibNum + fibNum];
+ }
+ return evenSum;
}
}
```