Para hacerlo de tu forma me gusta más una solución iterativa. En cambio para escribir una frase al revés esta solución recursiva es muy elegante:
#include <stdio.h>
void invierte(char *c) {
if(*c)
invierte(c+1);
}
int main() {
invierte("Hola, soy una cadena");
}
Mira, siguiendo con la misma idea:
void invierte ( char*p, char*i, int k) {
if(*p && k)
invierte(p+1, i, k-1);
i[k] = *p;
}
Al final sí tiene una solución elegante recursiva