You are on page 1of 2

+UniversidadPilotodeColombia

Prctica de algoritmos recursivos




Un palndromo es una palabra que se escribe del mismo modo hacia adelante y hacia atrs. Por
ejemplo, rotor y radar son palndromos, pero motor no es.




Cmo puedes usar recursividad para determinar si una palabra es un palndromo? Vamos a
empezar por entender qu es un caso base. Consideremos la palabra a. Es un palndromo. De
hecho, no tenemos que pensar en palndromos como palabras reales en el idioma espaol (o
cualquier idioma que desees considerar). Podemos pensar en un palndromo como cualquier
secuencia de letras que se lee igual hacia adelante y hacia atrs, como xyzyzyx. Llamamos a una
secuencia de letras una cadena. Entonces podemos decir que cualquier cadena que contiene una
sola letra predeterminada es un palndromo. Ahora, una cadena puede no contener ninguna letra;
llamamos a una cadena de cero letras una cadena vaca. Una cadena vaca tambin es un
palndromo, ya que se "lee" del mismo modo hacia adelante y hacia atrs. As que ahora digamos
que cualquier cadena que contenga a lo ms una letra es un palndromo. Ese es nuestro caso
base: una cadena con exactamente cero letras o una letra es un palndromo.

Qu pasa si la cadena contiene dos o ms letras? Aqu es en donde tendremos nuestro caso
recursivo. Considera el palndromo rotor. Sus primeras y ltimas letras son las mismas, y esta
caracterstica debe cumplirse para cualquier palndromo. Por otro lado, si las primeras y las
ltimas letras no son iguales, como en motor, entonces la cadena no puede ser un palndromo.
As que ahora tenemos una manera de afirmar que una cadena no es un palndromo: cuando sus
primeras y sus ltimas letras son diferentes. Podemos pensar acerca de esta situacin como otro
caso base, puesto que tenemos la respuesta inmediatamente. Volviendo a cuando las primeras y
las ltimas letras son las mismas, qu nos dice eso? La cadena puede ser un palndromo. Pero
tambin, puede no serlo. En la cadena rotar, las primeras y ltimas letras son las mismas, pero la
cadena no es un palndromo. Supn que desechamos la primera y la ltima letra, dejando la
cadena rota. Entonces la primera y la ltima letra de esta cadena restante no son las mismas,
entonces sabemos que rotar no es un palndromo.

As que aqu est cmo podemos determinar recursivamente si una cadena es un palndromo. Si
la primera y la ltimas letra difieren, entonces afirma que la cadena no es un palndromo. De lo
contrario, desecha la primera y la ltima letra y determina si la cadena que queda el sub problema
es un palndromo. Afirma que la respuesta para la cadena ms corta es la respuesta para la
cadena original. Una vez que llegues una cadena sin letras o con una sola letra, afirma que es un
palndromo. Aqu est una visualizacin de eso para las dos palabras que discutimos:

Pseudocdigo
1. Si la cadena est hecha de cero letras o de una letra, entonces es un palndromo.
2. De lo contrario, compara la primera y la ltima letra de la cadena.
3. Si la primera y la ltima letra difieren, entonces la cadena no es un palndromo. De lo
contrario, la primeras y la ltima letra son las mismas. Deschalas de la cadena y
determinar si la cadena que queda es un palndromo. Toma la respuesta para esta cadena
ms pequea y sala como la respuesta para la cadena original.

You might also like