There is nothing special about recursion in general in DCI, it can be done where it's deemed useful. It's important to remember however, that Roles cannot be rebound during a System operation and its following Interaction.
If you do a recursion on a whole System operation though, it's common that you want to rebind Roles at the recursion point. There are a few ways of doing that:
The choice is implementation- and convention-based. If you bind Roles only in the constructor, the first option could be more convenient.
Multiple calls to the “Bind Roles” method may not be a good idea. See: Can I rebind roles to objects multiple times over the lifetime of a Context object?