Originariamente inviato da Downloader
...

codice:
void p1 (list *p)
{
  if (p == NULL)
   return;
  else
   p1(p->next);

  printf("%i,p->d);

}
Fatta cosi ricorsivamente va bene??
Non mancherà un return dopo il printf? (questo è il grande dubbio)
Secondo me no.


Grazie
il return porta l'esecuzione alla fine della funzione e spesso, se la funzione è complessa, non aiuta alla compressione della logica utilizzata, un po' come i salti incondizionati.

Un modo più elegante per scrivere la tua funzione è
codice:
void p1 (list *p)
{
  if (p != NULL) {
    p1(p->next);
    printf("%d\n", p->d);
  }
}
devi poi chiudere le virgolette nella printf ed eventualmente aggiungere un salto riga in modo che i numeri non ti vengano stampati tutti attaccati-