Artículos
Java

Invertir una cadena con recursividad en Java

15/Jun/2015

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.

public String reverse(String palabra) {
 ...
}

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.

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

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.

public String reverse(String palabra) {
 if (palabra.length() == 1)
   return palabra;
 else 
   return reverse(palabra.substring(1));
}

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:

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

Código Fuente

Descárgate el código fuente de Invertir una cadena con recursividad en Java
Y si te ha gustado nuestro código fuente puedes regalarnos una estrella Star

Vídeos sobre Java

Disfruta también de nuestros artículos sobre Java en formato vídeo. Aprovecha y suscribete a nuestro canal.

Test Java

¿Te atreves a probar tus habilidades y conocimiento en Java con nuestro test?

Test Java
Suscribir
Notificar de
guest
1 Comentario
Recientes
Anteriores Más votados
Opiniones integradas
Ver todos los comentarios