boh, se devi spostare il primo elemento in fondo o shifti tutti gli elementi di una posizione (e qua viene utile la funzione ricorsiva, ma anche no volendo, c'è il while...) o lo fai ricorsivamente o pigli il primo, lo memorizzi, vai in fondo, memorizzi il secondo, piazzi il primo, ritorni in cima e metti l'ultimo...

Se ti è stata chiesta ricorsiva sarà come l'ho fatta io... non vedo alternative. Tranne per il fatto che avevo fatto un errore: devi passare già il puntatore settato al secondo elemento

codice:
void FirstLast(ListaInteri l->Next) {
    if(l==NULL)
        return;
    int temp; 
    temp=l->membro;
    ListaInteri *previous=l;
    while(l!=NULL){
       previous->membro=l->membro; 
       previous=previous->next;
       FirstLast(l->next);
    }
    previous->membro=temp;
}