When dealing with recursion, its important to note down what your base and recursive cases are and go from there. These different cases will essentially become the structure of your function. You've already figured out the different cases for your problem: 1. If `n == 0` 2. If 8 is in the ones digit place (`n % 10 == 8`) 3. If 8 isn't in the ones digit place (`n % 10 != 8`) If `n == 0`, then we just return 0. If `n % 10 == 8`, then we know we have one 8, but we need to call `count8` again with `n / 10` as our input parameter to `count8` When we return out of this call, we add 1 to our result before returning it since we had already found one 8. If `n % 10 != 8`, then we simply call `count8` with `n / 10` as our input parameter and return the result from this call. Hopefully this paints a clearer picture in how to cleanup your function (you can do it in 6 lines!).