Invertir una cadena con recursividad en Java
Concepto de Recursividad
Sección titulada «Concepto de Recursividad»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, es decir lo primero será lo último ejecutado.
Implementación de la función reverse
Sección titulada «Implementación de la función reverse»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 static String reverse(String palabra) { // código de la función}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.
if (palabra.length() <= 1) { return palabra;}Llamada recursiva
Sección titulada «Llamada recursiva»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.
reverse(palabra.substring(1))Pero todavía tenemos que tener en cuenta 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 static String reverse(String palabra) { if (palabra.length() <= 1) { return palabra; } return reverse(palabra.substring(1)) + palabra.charAt(0);}Descarga el código de Invertir una cadena con recursividad en Java
Uso de las técnicas de recursividad para poder invertir una cadena con recursividad en java