Let's trace through a countdown function to see self-calling behavior directly, using an example different from a factorial calculation.
Define a function countdown(n) that prints n and then calls countdown(n - 1), stopping when n reaches 0.
Calling countdown(3) proceeds as follows:
countdown(3) prints 3, then calls countdown(2).
countdown(2) prints 2, then calls countdown(1).
countdown(1) prints 1, then calls countdown(0).
countdown(0) is the base case, so it stops and returns without calling countdown again.
At every level of this chain, the exact same function definition, countdown, is the one being invoked again, just with a smaller argument each time. No other, different function is ever called; the function is calling itself. If there were no base case at n equal to 0, this chain would continue indefinitely with countdown(-1), countdown(-2), and so on, eventually exhausting the call stack.
This self-invoking pattern, a function repeatedly calling itself until a terminating condition is reached, is exactly what defines recursion.
Therefore, the correct answer is function calls itself repeatedly.