The recursive case is where you break the problem into a smaller version of itself. You assume you can solve the smaller problem, then use that solution to build the answer for the current problem.
For example, to compute 5., you say "if I knew 4., then 5.=5×4.". This "leap of faith" is the key to recursion: you trust that the recursive call will work, even though you are still writing the function.
I was personally amused when I first saw this. How can you call something that does not exist yet? It feels magical, doesn't it? But it works because each call handles a smaller piece. The recursive call always moves you closer to the base case.