mhh...

vediamo, ti dò un piccolo suggerimento, se ad esempio abbiamo la necessità di stampare la stringa "ciao" prima da sinistra verso destra e poi da destra verso sinistra attraverso la ricorsione diventa abbastanza facile, basta fare una cosa del genere

codice:
void ric(char *s, int i, int j)
{
    if(i>=j)
        return;
    else{
        printf("%c", s[i]);
        ric(s, i+1, j);
        printf("%c", s[i]);
    }

}
dove i è l'indice iniziale e j è la lunghezza della parola, in questo caso 4, con questa semplice funzione otteniamo ciaooaic, se hai presente come funziona la ricorsione il perché dovrebbe esserti abbastanza chiaro, in pratica noi stampiamo s[0] e chiamiamo la funzione ric, attenzione perché intanto la chiamata numero 1 non è ancora terminata, e via dicendo fino a quando la condizione nell'if non è verificata.

Facciamo il punto della situazione
codice:
chiamata 1: i=0; s[i]='c'
             2: i=1; s[i]='i'
             3: i=2; s[i]='a'
             4: i=3; s[i]='o'
arrivati a questo punto la condizione dell'if al passo seguente è verificata, quindi non vengono più effettuate chiamate alla funzione e vengono riprese le funzioni precedentemente chiamate, partendo dall'ultima, quindi si avrà la stampa al contrario "oaic".

Ora prova ad applicare più o meno lo stesso ragionamento sul tuo esercizio, se non ti è chiaro qualcosa chiedi pure.