Invertir una cadena de forma recursiva en Java

Rashmi Patidar 12 octubre 2023
Invertir una cadena de forma recursiva en Java

La recursividad es el proceso que llama a la función en sí repetidamente hasta que una condición de ruptura cumple los criterios. Permite al usuario llamar a la propia función desde sí mismo. Aquí hay algunas condiciones que deben cumplirse para hacer que una función sea recursiva:

  1. La función debe llamarse a sí misma desde la misma función.
  2. Se necesita una condición de terminación para evitar que el bucle recursivo reciba llamadas repetidas.
  3. La recursividad utiliza la estructura de datos Stack en su curso de acción. Almacena variables y llamadas a funciones en su almacenamiento.

A continuación se muestra el bloque de código para revertir una cadena utilizando recursividad en Java.

import java.util.Scanner;

public class StringReverseUsingRecursion {
  public static void main(String[] args) {
    Scanner scanner = new Scanner(System.in);
    System.out.println("Enter any String :");
    String str = scanner.nextLine();
    System.out.println("The reverse of the String is : " + recursiveReverse(str));
  }

  static String recursiveReverse(String input) {
    if ((input == null) || (input.length() <= 1))
      return input;
    else {
      return recursiveReverse(input.substring(1)) + input.charAt(0);
    }
  }
}

En el bloque de código anterior, la clase contiene un método estático y el método main. El método recursiveReverse() es la función recursiva estática que invierte una cadena mediante la recursividad. Toma un parámetro de entrada y también devuelve un valor de cadena.

En el método main, la clase Scanner se crea una instancia utilizando la nueva palabra clave. El constructor de la clase Scanner toma el flujo de entrada como parámetro y produce la cadena de entrada después de escanear desde la fuente de entrada.

También convierte el flujo de bytes en el juego de caracteres predeterminado que es el juego estándar UTF-8. El constructor arroja IllegalArgumentException si no puede convertir los datos al juego de caracteres predeterminado.

El sistema es un paquete de clase java.lang que representa los métodos y variables de instancia de flujo de entrada estándar. In es la variable de instancia del flujo de entrada que está abierta y lista para suministrar datos de entrada.

Esta secuencia utiliza la entrada del teclado u otra fuente de entrada especificada por el usuario.

La función nextLine() devuelve la línea actual, excluyendo el separador de línea al final. Por lo tanto, esto almacenará una línea de entrada definida por el usuario en la variable str. El String se pasa más tarde al método recursivo estático.

La condición de terminación en el método estático recursiveReverse() es verificar que la entrada sea nula o menor que uno, luego devolver la cadena de entrada en sí.

Si la condición no se satisface, vuelve a llamar a la función en sí, pero con la subcadena excluyendo el carácter ceroeth. La función substring() crea una subcadena de la Cadena real y pasa esa secuencia más pequeña al mismo método nuevamente.

Por lo tanto, se llama iterativamente y, al final, comienza a devolver caracteres en respuesta.

Producción :

Enter any String :
Hello
The reverse of the String is : olleH.
Rashmi Patidar avatar Rashmi Patidar avatar

Rashmi is a professional Software Developer with hands on over varied tech stack. She has been working on Java, Springboot, Microservices, Typescript, MySQL, Graphql and more. She loves to spread knowledge via her writings. She is keen taking up new things and adopt in her career.

LinkedIn

Artículo relacionado - Java String