GRAZIE funziona. ho provato a fare una modifica cioè senza usare il puntatore di appoggio ma solo testa e funziona lo stessa.
codice:
struct elemento*crea_lista(struct elemento*testa, int n)
{
  if (n==0)
    return NULL;
  else
    {
     testa=(struct elemento*)malloc (sizeof(struct elemento));
     testa->inf=4;
     testa->next=crea_lista(testa,n-1);
     return testa;
    }
}

Secondo te va bene lo stesso???