If a recursive solution ends up calling itself consecutively for say, ~N times, before going back up a level, the space efficiency is O(N) at best, because each of the N calls uses up a certain amount of stack space.
Does this also imply the time efficiency is also O(N) at best, because the code inside the recursive function is similar to an inner loop code that gets run ~N times?
In addition to @Ben’s answer there is also the case of “tail recursion” where the current stack frame is removed and replaced by the callee’s stack frame, but only when the caller’s last action is to return the result of a callee. This can result in O(n) time functions having O(1) space when implemented in an entirely functional language.