cioè non si può uscire dalla ricorsione vero? perche ad esempio ho notato in questo ciclo che posto(aggiunge i nodi ad un albero) che quando la ricorsione incappa in un p==NULL nella retro-ricorsione non fa altro che ripetere collegamenti già fatti.

codice:
struct nodo *crea_nodo(struct nodo *p, int val)
{
if(p==NULL){ /*il punto di inserimento è stato reperito */
  /* Creazione del nodo */
  p = (struct nodo *) malloc(sizeof(struct nodo));
  p->inf=val;
  p->alb_sin = NULL;
  p->alb_des = NULL;
}
else {
  if(val > p->inf)
    /* visita il sottoalbero destro */
    p->alb_des = crea_nodo(p->alb_des, val);
  else
    if(val < p->inf)
    /* visita il sottoalbero sinistro */
    p->alb_sin = crea_nodo(p->alb_sin, val);
}
return(p); /* Ritorna il puntatore alla radice */
}