Originariamente inviato da unomichisiada
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);
 }

}
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.
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ì.
no nn me la prendo.....almeno x me questo genere di post sono molto costruttivi



ps la mia opinione è pero' che usare una var static non rappresenta in alcun modo un tipo di "sotterfugi" o workaround