Best for what?
For performance you almost always want an iterative instead of recursive. But performance is not the only constraint.
Some algorithms are innately recursive. Forcing them into an iterative paradigm usually makes them less readable.
If you are compelled to make a recursive algorithm iterative, consider using an explicit stack. Then you can keep the structure and side step the issues related to call overhead and stack depth.