Invertir una cadena con recursividad en Java

15/Jun/2015 Java , , Deja un comentario

En la página ya teníamos publicados dos artículos sobre como invertir una cadena en Java. Por un lado podíais ver como invertirla utilizando un bucle y por otro apoyándonos en el método reverse de un StringBuilder. Pero en el día de hoy vamos a ver como podemos invertir una cadena con recursividad en Java.

Lo primero que tenemos que saber para poder invertir una cadena con recursividad en Java es el concepto de recursividad. Podríamos decir que la recursividad consiste en ejecutar un mismo código un número de veces limitado para luego acabar dando como resultado la agregación de todas estas ejecuciones. Si bien está agregación se ejecutará de forma inversa, el decir lo primero será lo último ejecutado.

Para poder invertir una cadena con recursividad en Java nos vamos a apoyar en esa ejecución inversa. Lo primero será crear la función reverse.

  1. public String reverse(String palabra) {
  2. ...
  3. }

Como vemos lo que recibe la función reverse es una cadena. Dentro de las funciones preparadas para la recursividad siempre hay una comprobación por la cual nos saldremos de la ejecución y otra con la cual llamaremos a la función.

En este caso el fin de la ejecución será cuando la palabra solo tenga un carácter.

  1. public String reverse(String palabra) {
  2. if (palabra.length() == 1)
  3. return palabra;
  4. }

En el caso contrario lo que haremos será llamar a la función nuevamente, pero en este caso la llamaremos con el contenido de la palabra a partir del segundo carácter.

  1. public String reverse(String palabra) {
  2. if (palabra.length() == 1)
  3. return palabra;
  4. else
  5. return reverse(palabra.substring(1));
  6. }

Pero todavía tenemos que tener en cuenta es qué hacer con el carácter que nos queda en la pila. Es decir, el carácter que está en la posición 0. Este carácter habrá que añadirlo al final de la cadena para conseguir que esté invertida.

Por lo que nuestro código para invertir una cadena con recursividad en Java será el siguiente:

  1. public String reverse(String palabra) {
  2. if (palabra.length() == 1)
  3. return palabra;
  4. else
  5. return reverse(palabra.substring(1)) + charAt(0);
  6. }

Vídeos sobre Java


Difunde el Conocimiento

Si te ha gustado el artículo o te ha sido de utilidad, no dejes de compartirlo con tus amigos en las redes sociales... Te estaremos muy agradecidos. :-D

¿Algo que nos quieras comentar?

Déjanos tu comentario, no te preocupes que tu email no será publicado

*

*