Invertir una Cadena en Java Usando Recursión – Guía Paso a Paso
Invertir una Cadena en Java Usando Recursión
La recursión es una técnica potente para resolver problemas que pueden descomponerse en subproblemas menores y similares. Invertir una cadena es un ejemplo clásico que demuestra cómo una función recursiva simple puede manejar elegantemente la manipulación de cadenas.
¿Por Qué Usar Recursión?
- Claridad conceptual – la función refleja naturalmente la definición del problema.
- Código mínimo – solo unas pocas líneas realizan la inversión.
- Valor educativo – refuerza el patrón caso base / paso recursivo.
Implementación en Java
El siguiente programa lee una cadena, aplica un método recursivo de inversión e imprime el resultado.
package com.guru99;
public class InvertirCadena {
public static void main(String[] args) {
String miStr = "Guru99";
String invertida = invertirCadena(miStr);
System.out.println("La cadena invertida es: " + invertida);
}
/**
* Invierte recursivamente la cadena dada.
* @param str la cadena a invertir
* @return la cadena invertida
*/
public static String invertirCadena(String str) {
if (str.isEmpty()) {
return ""; // Caso base: una cadena vacía es su propia inversa
}
// Recursión sobre la subcadena que excluye el primer carácter
return invertirCadena(str.substring(1)) + str.charAt(0);
}
}
Salida Típica
La cadena invertida es: 99uruG
Entendiendo el Flujo
La recursión funciona eliminando repetidamente el primer carácter y anexándolo al resultado de la inversa de la subcadena restante. Cuando la subcadena se vuelve vacía, la recursión se desenrolla, concatenando los caracteres en orden inverso.
Casos Edge y Rendimiento
- Cadena Vacía – manejada por el caso base, devolviendo cadena vacía inmediatamente.
- Entrada Null – puede añadir una comprobación null para evitar
NullPointerException. - Complejidad Temporal – O(n) tanto en tiempo como en espacio debido a la pila de recursión.
Conclusión
La inversión recursiva de cadenas es concisa y muestra el pensamiento algorítmico central. Para código de producción donde el rendimiento es crítico, un enfoque iterativo o usar StringBuilder es preferible por su menor uso de pila.
Java
- Dominar Strings en Java: Creación, Métodos y Mejores Prácticas
- Dominando representaciones String en Enums de Java
- Crear un array de objetos en Java: Guía paso a paso
- Método Java String length(): Cómo obtener el tamaño de un String (Ejemplo)
- Entendiendo Java String.charAt(): Sintaxis, tipo de retorno, excepciones y ejemplo práctico
- Dominando el método compareTo() de Java String: Sintaxis, casos de uso y ejemplos prácticos
- Dominando Java String.endsWith(): Cómo comprobar sufijos de cadena con ejemplos
- Dominando el reemplazo de Strings en Java: replace(), replaceAll() y replaceFirst() explicados
- Convertir Char a String en Java – Ejemplos Prácticos y Mejores Prácticas
- Generar Secuencia Fibonacci en Java: Ejemplos con For, While y Recursión
- Clase String en Java: Dominando Creación y Manipulación de Cadenas