DEV Community

Marco Agüero
Marco Agüero

Posted on

1

Comprendiendo la recursividad

Hey, que tal?
Espero que tu querido lector que encontraste este post, estés pasando un excelente día! 😎


Hoy quiero hablar sobre un tema sumamente interesante e importante para los desarrolladores, la recursividad pues este es un tema con el que te vas a encontrar en algún momento de tu carrera y mientras mas temprano lo comprendas mejor será para ti.
Antes de empezar debes entender que la recursividad no es algo complicado, simplemente debes comprender muy bien los conceptos básicos y con esto podrás resolver los problemas que se te presenten.


¿Qué es la recursividad?

La recursividad es un proceso mediante el cual una función se llama a si misma repetidas veces con la intención de resolver un problema.

Entendamos esto con ejemplos muy sencillos; imagina que tienes un computador muy simple, únicamente puede resolver problemas mediante operaciones sencillas.
Tienes una lista de números:

li = [1, 2, 3, 4, 5, 6]
Enter fullscreen mode Exit fullscreen mode

Ahora, por cada elemento de esa lista tienes que verificar cual de ellos es el valor de x de la función: f(x): x-2 = 2, podríamos verificarlo fácilmente si utilizamos un bucle, por ejemplo "While" o "for", y te doy un ejemplo en pseudocódigo:

  • Por cada elemento de la lista li:
  • Si el resultado de restarle 2 al elemento es igual a 2:
  • imprime verdadero

Al no poder hacer esto, ya que tenemos un computador muy simple, entonces debemos idear una solución. Bueno una forma de hacerlo seria hacer una función sencilla, que verifique si el primer elemento de la lista cumple con lo especificado, y que de no ser así, lo elimine y vuelva a preguntarse a si mismo si el siguiente elemento es el que estamos buscando.

¿Te perdiste? No te preocupes, vamos a ver un ejemplo:

Primero en pseudocódigo y luego lo veremos en código, tenemos la lista li:

Tenemos una lista:
li = [1, 2, 3, 4, 5, 6]
-> Creamos una función que recibe esa lista.
-> Verifica si el primer elemento de la lista existe.
-> Si es correcto pregunta: ¿elemento - 2 = 2?
-> Si esto también fue correcto, entonces retorne verdadero.
-> En caso de que sea falso, entonces elimine el primer elemento de la lista y vuelva a llamar esta función con la nueva lista.
Enter fullscreen mode Exit fullscreen mode

Bien, eso es todo... ¿Sencillo no? Ok ok, vamos al ejemplo en código:

Para efectos de este tutorial utilizare Python para los ejemplos en código, si gustan otro lenguaje cono Java o JavaScript déjenlo en los comentarios :D

lista = [1, 2, 3, 4, 5, 6]
def miFuncion(li):
    elem = li[0]
    if elem - 2 == 2:
        print("True", li[0])
    else:
        li.pop(0)
        miFuncion(li)

miFuncion(lista)
Enter fullscreen mode Exit fullscreen mode

Bien, ahora espero hayas comprendido la función anterior, ahora veamos un ejemplo un poco mas avanzado, vamos a crear una función que nos retorne el factorial de un numero.
Primero entendamos la teoría del factorial:

  • Se denota n! y se lee "n factorial".
  • Corresponde al producto de los números enteros positivos desde uno hasta 'n', incluso, es decir:
n! = 1 * 2 * 3 * ... (n-2)*(n-1)*n
Enter fullscreen mode Exit fullscreen mode

Ejemplos:
a) 3! = 3 * 2 * 1 = 6
b) 5! = 5 * 4 * 3 * 2 * 1 = 120
c) 6! = 6 * 5! = 6 * 120 = 720

Muy bien, ahora que entendimos la función factorial, vamos a programarla:

def factorial(num):
   if num == 1:
       return num
   else:
       return num*factorial(num-1)
Enter fullscreen mode Exit fullscreen mode

Y eso es todo, con eso ya tenemos la función factorial trabajando, luego simplemente es añadir validaciones como por ejemplo que si es un numero negativo retorne un mensaje, si el numero es cero, que retorne otro y con eso la función estaría mas que perfecta.

Eso que acabamos de ver es recursividad, únicamente necesitas comprender que es lo que esta haciendo la función por dentro para poder comprenderla.

Espero este tutorial te sea de ayuda, si tienes dudas déjalas en los comentarios y con gusto los leeré y tratare de continuar explicando o enseñando :D

Image of Timescale

🚀 pgai Vectorizer: SQLAlchemy and LiteLLM Make Vector Search Simple

We built pgai Vectorizer to simplify embedding management for AI applications—without needing a separate database or complex infrastructure. Since launch, developers have created over 3,000 vectorizers on Timescale Cloud, with many more self-hosted.

Read full post →

Top comments (0)

Billboard image

The Next Generation Developer Platform

Coherence is the first Platform-as-a-Service you can control. Unlike "black-box" platforms that are opinionated about the infra you can deploy, Coherence is powered by CNC, the open-source IaC framework, which offers limitless customization.

Learn more

👋 Kindness is contagious

Please leave a ❤️ or a friendly comment on this post if you found it helpful!

Okay