Esempio parola palindroma
Palindromo → Parola che si può leggere indifferentemente da destra a sinistra e viceversa
onorarono → è palindroma
a → è palindroma;
anno → NON è palindroma
Versione iterativa
int palindromoI(char par[])
{
int da = 0; //Indice del primo carattere
int a = strlen (par) - 1; //Indice dell'ultimo carattere
while (da < a)
{
if (par[da] != par[a])
return 0;
++da;
--a;
}
return 1;
}
Il programma scansiona la parola facendo muovere gli indici verso il centro di par e dice FALSE alla prima differenza.
Versione ricorsiva 1
int palindromoR (char par[], int da, int a)
{
if (da >= a)
return 1;
else
return (par[da] == par[a] && palindromoR(par, da+1, a-1));
}
É più efficiente rispetto alla versione 2 per via degli operatori logici valutati “pigramente” dal C.
Versione ricorsiva 2
int palindromoR (char par[], int da, int a)
{
if (da >= a)
return 1;
else
return (palindromoR(par, da+1, a-1) && par[da] == par[a]);
}
Chiamare la funzione nel main
palindromoR("oro", 0,2);
//OPPURE
palindromoR(str, 0, strlen(str)-1);