104 lines
		
	
	
		
			2.0 KiB
		
	
	
	
		
			Markdown
		
	
	
	
	
	
		
		
			
		
	
	
			104 lines
		
	
	
		
			2.0 KiB
		
	
	
	
		
			Markdown
		
	
	
	
	
	
|   | --- | ||
|  | id: 5900f36e1000cf542c50fe81 | ||
|  | title: 'Problem 2: Even Fibonacci Numbers' | ||
|  | challengeType: 5 | ||
|  | forumTopicId: 301838 | ||
|  | dashedName: problem-2-even-fibonacci-numbers | ||
|  | --- | ||
|  | 
 | ||
|  | # --description--
 | ||
|  | 
 | ||
|  | 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: | ||
|  | 
 | ||
|  | <div style='text-align: center;'>1, 2, 3, 5, 8, 13, 21, 34, 55, 89, ...</div> | ||
|  | 
 | ||
|  | By considering the terms in the Fibonacci sequence whose values do not exceed `n`, find the sum of the even-valued terms. | ||
|  | 
 | ||
|  | # --hints--
 | ||
|  | 
 | ||
|  | `fiboEvenSum(10)` should return a number. | ||
|  | 
 | ||
|  | ```js | ||
|  | assert(typeof fiboEvenSum(10) === 'number'); | ||
|  | ``` | ||
|  | 
 | ||
|  | Your function should return an `even` value. | ||
|  | 
 | ||
|  | ```js | ||
|  | assert.equal(fiboEvenSum(10) % 2 === 0, true); | ||
|  | ``` | ||
|  | 
 | ||
|  | Your function should sum the even-valued Fibonacci numbers: `fiboEvenSum(8)` should return 10. | ||
|  | 
 | ||
|  | ```js | ||
|  | assert.strictEqual(fiboEvenSum(8), 10); | ||
|  | ``` | ||
|  | 
 | ||
|  | `fiboEvenSum(10)` should return 10. | ||
|  | 
 | ||
|  | ```js | ||
|  | assert.strictEqual(fiboEvenSum(10), 10); | ||
|  | ``` | ||
|  | 
 | ||
|  | `fiboEvenSum(34)` should return 44. | ||
|  | 
 | ||
|  | ```js | ||
|  | assert.strictEqual(fiboEvenSum(34), 44); | ||
|  | ``` | ||
|  | 
 | ||
|  | `fiboEvenSum(60)` should return 44. | ||
|  | 
 | ||
|  | ```js | ||
|  | assert.strictEqual(fiboEvenSum(60), 44); | ||
|  | ``` | ||
|  | 
 | ||
|  | `fiboEvenSum(1000)` should return 798. | ||
|  | 
 | ||
|  | ```js | ||
|  | assert.strictEqual(fiboEvenSum(1000), 798); | ||
|  | ``` | ||
|  | 
 | ||
|  | `fiboEvenSum(100000)` should return 60696. | ||
|  | 
 | ||
|  | ```js | ||
|  | assert.strictEqual(fiboEvenSum(100000), 60696); | ||
|  | ``` | ||
|  | 
 | ||
|  | `fiboEvenSum(4000000)` should return 4613732. | ||
|  | 
 | ||
|  | ```js | ||
|  | assert.strictEqual(fiboEvenSum(4000000), 4613732); | ||
|  | ``` | ||
|  | 
 | ||
|  | # --seed--
 | ||
|  | 
 | ||
|  | ## --seed-contents--
 | ||
|  | 
 | ||
|  | ```js | ||
|  | function fiboEvenSum(n) { | ||
|  | 
 | ||
|  |   return true; | ||
|  | } | ||
|  | ``` | ||
|  | 
 | ||
|  | # --solutions--
 | ||
|  | 
 | ||
|  | ```js | ||
|  | const fiboEvenSum = (number) => { | ||
|  |   if (number <= 1) { | ||
|  |     return 0; | ||
|  |   } else { | ||
|  |     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; | ||
|  |       } | ||
|  |       [prevFibNum, fibNum] = [fibNum, prevFibNum + fibNum]; | ||
|  |     } | ||
|  |     return evenSum; | ||
|  |   } | ||
|  | }; | ||
|  | ``` |