# Explaining Leetcode’s Number of Steps to Reduce a Number to Zero Problem (JavaScript)

1. Dividing by two if it’s even, or
2. Subtracting one, then dividing by two if it’s odd
`function numberOfSteps(num) {  let steps = 0;while (num > 0) {    if (num % 2 === 0) {      num /= 2;      steps++;    } else {      num--;      steps++;    }  }  return steps;}`
• Create a steps variable an initialize it with a value of 0.
• Is 14 greater than 0? Of course, so we enter the loop
• If we divide 14 by 2, do we get a remainder of 0? We do, so this condition evaluates to true, and we execute the following block by dividing it by 2 (resulting in 7), and incrementing our steps variable to 1.
• Now num is 7, and still greater than 0, so we enter the loop again.
• If we divide 7 by 2, do we get a remainder of 0? Nope, so we ignore this.
• Next we have to subtract 1 from 7 resulting in 6, and increment our steps counter to 2.
• Now num is 6, and still greater than 0, so we enter the loop again.
• If we divide 6 by 2, do we get a remainder of 0? We do, so this condition evaluates to true, and we execute the following block by dividing it by 2 (resulting in 3), and incrementing our steps counter to 3.
• Now num is 3, and still greater than 0, so we enter the loop again.
• If we divide 3 by 2, do we get a remainder of 0? Nope, so we ignore this.
• Next we have to subtract 1 from 3 resulting in 2, and increment our steps counter to 4.
• Now num is 2, and still greater than 0, so we enter the loop again.
• If we divide 2 by 2, do we get a remainder of 0? We do, so this condition evaluates to true, and we execute the following block by dividing it by 2 (resulting in 1), and incrementing our steps counter to 5.
• Now num is 1, and still greater than 0, so we enter the loop again.
• If we divide 1 by 2, do we get a remainder of 0? Negative Ghost Rider, so we ignore this.
• Next we have to subtract 1 from 1 resulting in 0, and increment our steps counter to 6.
• Now num is 0. Is 0 greater than 0? It is not, they’re the same, so the while loop stops execution and the program returns steps, which as this point is 6.

--

--

--

## More from Saul Feliz

Always learning.

Love podcasts or audiobooks? Learn on the go with our new app.

Always learning.