If you mean by reentrant that a further function call can begin before the previous one is finished, then yes, all recursive functions turn out to be reentrant, because recursion involves re-entry in this sense.
However, "reuse" is sometimes used as a synonym for "thread safety", which introduces many other requirements, and in this sense the answer is no. In single-threaded recursion, we have a special case when only one "instance" of the function will be executed, because the "idle" instances on the stack are waiting for the return of their "child" instance.
source
share