no nn me la prendo.....almeno x me questo genere di post sono molto costruttiviOriginariamente inviato da unomichisiada
Si è concisa ed efficiente ma in questo modo avete in qualche modo "barato",infatti la funzione semplicemente salva in una locazione static l'informazione in più che gli serve invece di prenderla come parametro.codice:int palindroma(char *parola) { static unsigned int i=1; //controllo che la stringa passata non sia nulla asser(parola != NULL) //condizione di uscita della ricorsione if(i == strlen(parola)) return 1; if(parola == parola[strlen(parola)-i] ) { i++; return palindroma(++parola); } }
Io ho provato a farlo senza questo tipo di sotterfugi (usare una variabile statica come voi o una variabile globale per la lunghezza l'ho scartato a priori come non risolutivo) e sono giunto alla conclusione che non è possibile farlo a meno di usare un array di appoggio in cui copiare ogni volta solo la sottostringa rimanente da parsare e passare quello alla successiva chiamata ricorsiva (ma così ciao ciao all'efficienza) .Spero che non ve la prendiate troppo per questa critica ma io la penso così.![]()
![]()
ps la mia opinione è pero' che usare una var static non rappresenta in alcun modo un tipo di "sotterfugi" o workaround![]()