Part of this exercise is meant to practice what we know in solving this problem. It does not suggest using code that we do not understand. We should be writing an iterative algorithm to complete the factorial problem.

What you have above is a recursive function, something we have not covered up to this point. Best advice would be to try solving the problem another way.

As you have observed, the above function does indeed call itself, `x`

times.

```
# let x = 7
factorial(7)
factorial(6)
factorial(5)
factorial(4)
factorial(3)
factorial(2)
factorial(1)
```

Each of these calls have to wait on the completion of the later call, which sets up a stack of calls that will begin to return once the base case (x == 1) is reached. The wind down of the call stack competes the series of multiplications.