ho trovato una funzione ricorsiva che mi ha lasciato un po 'sorpreso di questa funzione conta i numeri tutti negativi che compaiono in un array:Strano espressione nella istruzione return
int count_negative(int arr[], int n)
{
if (n > 0)
return (*arr < 0) + count_negative(++arr, n - 1);
return 0;
}
Qualcuno può spiegare questa linea:
return (*arr < 0) + count_negative(++arr, n-1);
Grazie
Questa è un'implementazione piuttosto scadente della ricorsione; non è idoneo per essere convertito in coda, quindi le prestazioni ne risentiranno rispetto a un'implementazione iterativa. – cdhowie
Non questo '(* arr ...) + count_negative (++ arr, ...' provoca UB? – alk
@cdhowie: GCC sembra proprio bene al TCO. – ninjalj