La recursividad es el proceso de una función que se llama a sí misma desde su propio código. Puede considerarlo como otra forma de lograr una construcción en bucle. El patrón de recursividad aparece en muchos escenarios del mundo real, y aquí cubriremos algunos ejemplos de recursividad en Python. Una función recursiva sigue llamándose a sí misma hasta que ha completado el problema en cuestión. Eso trae un buen punto, y es asegurarse de que su función recursiva realmente termine y regrese en algún momento. De lo contrario, la función recursiva se ejecutará para siempre, agotará su memoria y bloqueará su computadora. Tener un paso donde la función realmente termina se conoce como condición de ruptura. Cada vez que se llama a una función recursiva, los valores de los argumentos de la llamada anterior se almacenan en la pila de llamadas.

Ejemplo de recursividad 1: contando hacia atrás de 2 en 2

Aquí tenemos una función llamada backwardsby2, que imprime números en orden inverso usando pasos de 2 comenzando con un número inicial. La condición de ruptura es si el número es menor o igual a cero. En ese caso, simplemente imprimimos Zero! Si esa condición no se cumple, la función se llama a sí misma usando el número actual - 2. También inicializamos una lista y agregamos un emoji sonriente igual al número actual. De esa manera, a medida que ocurre el conteo hacia atrás, aparecerá un número correspondiente de sonrisas emoji para cada iteración. Creo que estará de acuerdo, esta es una característica importante de este ejemplo de recursividad.

9 😃 😃 😃 😃 😃 😃 😃 😃 😃
7 😃 😃 😃 😃 😃 😃 😃
5 😃 😃 😃 😃 😃
3 😃 😃 😃
1 😃
¡Cero!

Ejemplo de recursividad 2: Torre de Hanoi

La Torre de Hanoi es un antiguo rompecabezas que se dice que se originó en India o Vietnam. Implica mover anillos o discos de varios tamaños en tres polos. El objetivo de este rompecabezas es mover todos los anillos de un poste a otro mientras se mantiene intacto el orden de los anillos. Sin embargo, debes seguir las reglas del rompecabezas, y esto es que solo se puede mover un derecho a la vez, y no se puede colocar ningún anillo encima de un anillo de menor tamaño. Este rompecabezas se puede resolver usando la recursividad en Python, ¡así que veámoslo en acción!

Mueva el anillo 1 del polo izquierdo al polo medio
Mueva el anillo 2 del polo izquierdo al polo derecho
Mueva el anillo 1 del polo medio al polo derecho

La salida anterior muestra el número de pasos involucrados cuando solo hay dos anillos. Podemos volver a ejecutar el programa mientras usamos tres anillos, y verás que el número de pasos para resolver la torre de Hanoi crece. Además, puede consultar cada paso del proceso en las visualizaciones.

Mueva el anillo 1 del polo izquierdo al polo derecho
Mueva el anillo 2 del polo izquierdo al polo medio
Mueva el anillo 1 del polo derecho al polo medio
Mueva el anillo 3 del polo izquierdo al polo derecho
Mueva el anillo 1 del polo medio al polo izquierdo
Mueva el anillo 2 del polo medio al polo derecho
Mueva el anillo 1 del polo izquierdo al polo derecho

Torre de Hanoi estado inicial
torre de hanoi paso 1


Mueva el anillo 1 del polo izquierdo al polo derecho
paso 2 torre de hanoi


Mueva el anillo 2 del polo izquierdo al polo medio
torre de hanoi paso 3


Mueva el anillo 1 del polo derecho al polo medio
paso 4 torre de hanoi


Mueva el anillo 3 del polo izquierdo al polo derecho
torre de hanoi paso 5


Mueva el anillo 1 del polo medio al polo izquierdo
paso 6 torre de hanoi


Mueva el anillo 2 del polo medio al polo derecho
torre de hanoi paso 7


Mueva el anillo 1 del polo izquierdo al polo derecho
la torre de hanoi está completa


Ejemplo de recursividad 3: establecer un número en una potencia

Podemos usar la recursividad para crear una función que calcule el valor de un número multiplicado por sí mismo un cierto número de veces. Por supuesto, lo has visto muchas veces. Es una operación común en matemáticas establecer un número a la potencia de un número. Por ejemplo, dos elevado a la cuarta potencia es 16, dos la quinta potencia es 32, y así sucesivamente. Queremos multiplicar un argumento un número determinado de veces. Eso significa que necesitamos dos argumentos, uno para el número en sí y otro para la potencia a la que se establecerá. La condición de ruptura es si la topwrvariable es cero. Esto significa que hemos completado todas las multiplicaciones necesarias. Es el hecho de que esta función se llame a sí misma de forma recursiva lo que proporciona un comportamiento de bucle.

4 elevado a 7 es 16384
2 elevado a 8 es 256

Ejemplo de recursividad 4: función factorial

Factorial es el proceso de multiplicar todos los números enteros menores o iguales a un número dado. ¡Entonces, 5! es equivalente a 5 * 4 * 3 * 2 * 1 que es 120. Podemos usar una función recursiva para hacer este trabajo por nosotros. Solo se necesitará un argumento, el número al que queremos aplicar un factorial. Para la condición de ruptura, si el argumento dado ha llegado a cero, devolvemos el valor de uno. De lo contrario, devolvemos el número multiplicado por factorial y disminuimos el valor del número.

4! es 24
2! es 2

Ejemplo de recursividad 5: secuencia de Fibonacci

La secuencia de Fibonacci ocurre en todas partes del mundo y en toda la naturaleza. La secuencia 0, 1, 1, 2, 3, 5, 8, 13, 21, 34, etc. es la secuencia de Fibonacci. Cada número sucesivo se encuentra sumando los dos números anteriores. Así es como calculamos la secuencia de Fibonacci en Python usando una función recursiva. Utiliza este proceso.

  • Si el número es 0, entonces la respuesta es 0.
  • Si el número es 1, entonces la respuesta es 1.
  • De lo contrario, la respuesta es la suma de los dos números de Fibonacci anteriores.

Secuencia Fibonacci:
0
1
1
2
3
5
8
13
21
34
55
89
144
233

Ejemplo de recursividad 6: suma de números del 1 al n

Podemos usar la recursividad para encontrar la suma de números del 1 al n como 1 + 2 + 3 + 4 +, etc.

6
21
45

Ejemplo de recursividad 7: invertir una cadena

Este es divertido. Aquí está la función recursiva para invertir una cadena, y algunas cadenas muy interesantes que producen resultados inesperados cuando se invierten.

reforzado
hedor
lageR
desliz
tranvías
bofetada
verrugas
emitir
ratas



Resumen de ejemplos de recursividad de Python

Las funciones recursivas se denominan a sí mismas directa o indirectamente y dan como resultado un bucle. Este bucle continúa hasta que se cumple una condición de ruptura. Se pueden utilizar para atravesar estructuras de formas arbitrarias o para iteraciones en general. Python admite la recursividad, aunque no es necesariamente el enfoque más simple o más eficiente en muchas situaciones. En este tutorial, vimos varios ejemplos de recursividad en Python. Coloque los fragmentos en su IDE y pruébelos mientras cambia los argumentos proporcionados a las funciones. Esto ayudará a comprender mejor cómo funcionan. Hay algunos inconvenientes de las funciones recursivas a tener en cuenta. Las funciones recursivas pueden ser ineficaces ya que ocupan mucha memoria y tiempo. Además de eso, a veces la lógica detrás de la recursividad es difícil de seguir, lo que dificulta los problemas de depuración.