Factorialize a Number Using a For Loop

Factorialize a Number Using a For Loop
0

#1

Tell us what’s happening:
Ok so I actually got the correct answer using recursion, but I went back to look at the solution using a for loop and was totally thrown off. I don’t understand why the exit condition for the loop is “num >= 1”. Seems to me that the exit condition should be num <= 1, or num <= 0, since that is when we want the loop to stop, correct? When num counts down from 5 down to 1 and stops. That’s how my mind is thinking of it anyway, but that answer doesn’t work. Can someone please explain why so I can comprehend?

Thanks!

Nick

Your code so far

function factorialize(num) {
  for (i = 1; num >= 1; num--) {
    i = num * i;
  }
  return i;
}

factorialize(5);

Your browser information:

Your Browser User Agent is: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.84 Safari/537.36.

Link to the challenge:


#2

num >= 1 is not the exit condition. It’s the looping condition. The loop will continue as long as num >= 1. You’re right about the exit condition though, since you can argue that the exit condition is the opposite of the looping condition, which is num < 1 (or num <= 0).


#3

If you make the for loop condition num <= 1, then when you pass 5 into the function like:

factorialize(5);

since num is equal to 5 when entering the for loop, the condition of num <= 1 is false because 5 is NOT less than or equal to 1 (nor is 5 less than or equal to 0 - your other option). Because the for loop condition is false, the code inside the for loop never executes. However, the i = 1 part in the for loop does set i equal to 1, so that is why the function returns 1.


#4

That makes so much sense! Bing! Lightbulb.

So how do you know when you’re using a looping condition or an exit condition? I thought while loops used looping conditions and for loops used exit conditions. Or can a for loop use either one?


#5

Both always use looping conditions.