Yeah that one is hurting my brain. Just slow it down and go step by step. Let's say that we do factorial(3) as an example.

So go through the function.

*if x > 1:*

3 is greater than 1, so then result = 3 * factorial(3 - 1), that is to say

`result = 3 * factorial(2)`

So now we're going through the factorial function again, but with 2. i.e. factorial(2)

Again, we have

*if x > 1:*

Two is greater than 1, so result = 2 * factorial(2 - 1), or rather

result = 2 * factorial(1)

Now we're going through the factorial function again with 1. i.e. factorial(1)

*if x > 1:*

Is 1 > 1? Nope! So we get this:

*else:*

*return x*

Which means that **factorial(1) == 1**.

Now we go backwards and look at the results.

Remember when we looked at this?

*result = 2 * factorial(2 - 1)*

which is the same thing as

*result = 2 * factorial(1)*

which we now know is the same thing as

*result = 2 * 1*

So that means that **factorial(2) == 2**

Now we look back again. Remember this?

*result = 3 * factorial(3 - 1)*

which is the same thing as

*result = 3 * factorial(2)*

which we now know is the same thing as

*result = 3 * 2*

Which of course means **result == 6**

Does that help? I know it's convoluted, but if you start small and go step by step, it starts to make sense.