Lista Vinculada Reversa Recursivamente

Tenho um nó definido na lista vinculada como:

typedef struct abc
{
    int id;
    struct abc *next;        
}node;

Quero reverter uma lista vinculada recursivamente. Estou passando o ponteiro da cabeça para a função. Minha definição de função é semelhante a:

node *reverseLinkedListRecursively(node *head)
{
    node *current;
    node *rest;
    if(head == NULL)
        return head;

    current=head;
    rest=head->next;

    if(rest == NULL)
    {
       return rest;
    }
    reverseLinkedListRecursively(rest);
    current->next->next=rest;
    current->next=NULL;
    return rest;
}

Como devo proceder? Eu implementei a abordagem iterativa.

questionAnswers(4)

yourAnswerToTheQuestion