Como invertir un String con recursividad




Primero que todo ¿Que es recursividad?

Recursividad es el proceso en el que una función se invoca a si misma. La solución de este problema depende de la solución de instancias más pequeñas del mismo problema.

Pasos a tener en cuenta cuando usamos recursividad.

Paso 1. Ten especificaciones específicas

Paso 2. Procura que tu método trabaje en el caso base.

Paso 3. Presta atención al caso recursivo(s). En tu mente reemplaza cada invocación recursiva de acuerdo a las especificaciones y verifica que todo este correcto.

Paso 4. Ten en cuenta no tener un proceso recursivo infinito. Asegúrate de que los argumentos de invocaciones recursivas son en algún caso más pequeñas que las partes de los métodos.

Aquí discutiré el problema de como invertir un String, o una palabra usando JavaScript. Este problema se podría resolver fácilmente utilizando un ciclo for. Sin embargo, quiero utilizar el método de recursividad para resolver el mismo problema.

1. Primero creamos una función llamada: "invertirString", que reciba como argumento un String: "str".

function invertirString(str) {
}

2. Necesitamos saber el tamaño del String, por lo tanto creamos una variable llamada "sLen" que sera igual al str.length.

function invertirString(str) {
       let sLen = str.length;
}

3. ¿Ahora, para que saber el tamano del String? Pues la lógica de las invocaciones recursivas requiere que llamemos la funcion "invocarString()" tantas veces sea necesario, teniendo en cuenta que cada vez que llamemos la función el valor del argumento (str), debe de ser cada vez menor.

Si cada vez que llamemos la funcion "invertirString()" queremos que la entrada sea menor entonces el caso base seria cuando el tamaño del String sea menor o igual que 0. Por lo tanto:

function invertirString(str) {
       let sLen = str.length;
       if (sLen <= 0) {
        return "";
    }
}

Cuando hayamos llamado la función muchas veces hasta agotar el tamano del String debemos retornar la función con un String vacío.

4. La parte más importante de las funciones recursivas es invocarse a si mismas. En este caso para invertir un String debemos primero utilizar el método "chatAt()" para tomar el último caracter en nuestro String y concatenarlo con el resultado de la invocación de nuestra funcion. Como queremos que el String valla eliminando el caracter que vallamos añadiendo a nuestro resultado y así achicando la entrada, entonces utilizamos el método "substring()" para ello. De esta manera nuestro código terminaría así:

function invertirString(str) {
    let sLen = str.length;
    if (sLen <= 0) {
        return '';
    } else {
        return str.charAt(sLen - 1) + invertirString(str.substring(0, sLen -1));
    }
}




Publicar un comentario