Buonasera a tutti..ho alcuni problemi con il seguente esercizio.
In pratica, sono riuscita a fare la versione iterativa ma non riesco a fare una versione ricorsiva che non mi dia problemi..Vi posto il testo :

Progettare un algoritmo ricorsivo sottoforma di function che date due linked list head1 e head2 (con campo info di tipo integer), restituisca TRUE se head2 è sottolista di head1, FALSE altrimenti.
Ad es. se in input si ha
head1= 2 -> 0 -> 10 -> 1 -> 21 -> 11
head2= 0 -> 10 -> 1
la function ritorna TRUE.
Altrimenti se:
head1= 2 -> 0 -> 10 -> 1 -> 21 -> 11
head2= 0 -> 1 -> 21
la function ritorna FALSE.

Ho fatto tante prove una delle quali è la seguente. Il punto è che durante l'esecuzione il programma mi salta le chiamate alla funzione ricorsiva.

codice:
bool sottolista(list *head1,list *head2){
     if(head1->info != head2->info)
        sottolista(head1->next,head2);
     if(head1 != NULL && head2 != NULL){
      if(head1 -> info == head2 ->info)
        sottolista(head1->info,head2->info);
      else return false;}
     if(head2 == NULL) return true;
}
Spero possiate aiutarmi, grazie a tutti!