Getting Half Of The Results In An Array

This has stumped me for a bit, and I can’t make logical sense of it. I always get half of the array (`computeFactorialOfN(4) --> end value is 2 , computeFactorialOfN(100) --> end value is 50`). This is part of a larger exercise to get a factorial, and I’m thinking of having the code below to put all the numbers below `n` in an array and in a later function multiply all those values together and returning the answer. Here’s the code:

``````function computeFactorialOfN(n) {
var factorial = [] // this is the array

for (var i = 0; i <= n; i++) {  // i is 0; if i is <= 0,; increment i
factorial.push(n) //push that value to var factorial
n-- // and decrement (n = 6, so n would be 5 then 4 then 3 etc.
}
return factorial //return the array
}
computeFactorialOfN(6) // --> [6, 5, 4, 3]
``````

I’m expecting to get [6, 5, 4, 3, 2] (I’m not bothering with multiplying by 1), but I’m not. Thoughts about my strategy and the code snippet are welcome.

Wait, I see your logic. Here’s the problem.

In this line you increment `i` by 1 with every loop.

This line you decrement `n` by 1 with every loop.

So in reality, you’re cutting your loop in half, because `i <= n` gets closer to true by `2` each loop, not by `1`.

1 Like