codice:
somma_binary(inizio_lista, r) {
  if (n == 0)
    return;
  if(inizio_lista->left == NULL) {
    inizio_lista->left = allocazione_memoria;
    inizio_lista->left->right = inizio_lista;
    inizio_lista->left->left = NULL;
    inizio_lista->left->info = 0;
  }
  l->info += r & 1;
  if(l->info & 2)
   somma_binary(l->left, 1);
  l->info &= 1;
  somma_binary(l->left, r<<1);
}
Questo dovrebbe funzionare anche se è piuttosto inefficente.
Però puoi sommare solo numeri positivi, e non considera il caso in cui passi all'inizio un NULL, inoltre avrai sempre uno 0 in testa...
Va richiamata con l'ultimo elemento...
E' più semplice implementare una funzione con più parametri e creare una macro che la richiami