Fibonnaci sum all odds algorithm - question


For this exercise, how do I find out all values up to the one passed into the function? For the first for loop, I am using num as the value up to in the condition but I think that is setting the length of the array to generate and store up to and not creating values up to it.

function sumFibs(num) {
  var fiboArr = []
  const reducer = (accumulator, currentValue) => accumulator + currentValue

  //generate fibonacci sequence to
  //populate array with numbers up to argument
  for(let i=1; i<num; i++) {
    fiboArr[i+1] = fiboArr[i] + fiboArr[i-1];
  //remove even numbers
  for(let j=0; j<fiboArr.length; j++) {
   return fiboArr.reduce(reducer);

With the following test cases, they do not pass:

sumFibs(5); //expect 10, receiving 12; array before sum is [ 1, 1, 2, 3, 5 ]
sumFibs(10); //expect 10, receiving 88; arrau before sum is [ 1, 1, 2, 3, 5, 8, 13, 21, 34 ]

You are correct,

this creates num Fibonacci numbers.

I would pick a loop condition that stops when the most recently generated Fibonacci number is larger than num.

As a side note, your code will run much faster if you don’t use an array fiboArr.

Thanks, I did away with the array. Ran way faster for sure.

1 Like

Awesome! As a general rule of thumb for performance, only store data if you need the data later.

1 Like