Funciones recursivas en Python

PythonPythonBeginner
Practicar Ahora

💡 Este tutorial está traducido por IA desde la versión en inglés. Para ver la versión original, puedes hacer clic aquí

Introducción

Bienvenido al mítico reino de Pythonesia, un gran imperio famoso por su avanzado uso de constructos mágicos y matemáticos. Como el guardia real principal del reino, te encomienda la defensa del artefacto más preciado del imperio: El Cristal Recursivo. Las leyendas afirman que fue creado utilizando un código antiguo que se repite en sí mismo para crear una fuente infinita de energía. Para entender y proteger mejor este artefacto, debes dominar el arte de la recursividad en Python, la misma habilidad que se utilizó para crearlo.

Tu objetivo será aprovechar el poder de la recursividad para resolver problemas complejos que no se pueden resolver fácilmente por medios convencionales. Al hacerlo, garantizarás la seguridad de la riqueza y el conocimiento del imperio frente a aquellos que buscan abusar de ellos. Prepárate para emprender un viaje a través del tiempo y del código, desentrañando los misterios de las funciones recursivas.


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL python(("Python")) -.-> python/FunctionsGroup(["Functions"]) python/FunctionsGroup -.-> python/recursion("Recursion") subgraph Lab Skills python/recursion -.-> lab-271585{{"Funciones recursivas en Python"}} end

Comprendiendo la recursividad

En este paso, aprenderás el concepto básico de recursividad y cómo implementarla en Python. Una función recursiva es aquella que se llama a sí misma para resolver un problema. La clave para diseñar una función recursiva es asegurarse de que tenga un caso base, que es una condición que detiene la recursión, y un caso recursivo, que es donde la función se llama a sí misma.

Comencemos creando una función recursiva simple que calcule el factorial de un número. El factorial de un número n es el producto de todos los enteros positivos menores o iguales a n.

Abra ~/project/factorial.py en su editor de texto preferido y agregue el siguiente código:

def factorial(n):
    if n == 0:  ## Caso base
        return 1
    else:        ## Caso recursivo
        return n * factorial(n - 1)

## Uso de ejemplo
print(factorial(5))

Para ejecutar el código, use el siguiente comando:

python3 factorial.py

El resultado esperado debería ser 120 ya que 5! = 5 * 4 * 3 * 2 * 1 = 120.

Recursividad con múltiples casos base

A continuación, aprenderás cómo construir una función recursiva con múltiples casos base. Vamos a crear una función fibonacci en un archivo llamado fibonacci.py, que calculará la secuencia de Fibonacci hasta el n-ésimo número. La secuencia de Fibonacci es una serie de números en la que cada número es la suma de los dos números anteriores, comenzando desde 0 y 1.

Ingrese el siguiente código en ~/project/fibonacci.py:

def fibonacci(n):
    if n == 0:  ## Primer caso base
        return 0
    elif n == 1:  ## Segundo caso base
        return 1
    else:         ## Caso recursivo
        return fibonacci(n - 1) + fibonacci(n - 2)

## Uso de ejemplo
print(fibonacci(10))

Ejecute el código con el comando:

python3 fibonacci.py

La salida esperada debería ser 55, ya que es el décimo número en la secuencia de Fibonacci.

Resumen

En este laboratorio, profundizamos en el concepto de recursividad en Python al aplicarlo a dos secuencias matemáticas diferentes. El proceso de pensamiento en el diseño giraba en torno a la creación de una trama interesante que hiciera que el aprendizaje de la recursividad fuera divertido y relevante. Las tareas se estructuraron desde un caso base simple de factoriales hasta un escenario ligeramente más complejo con múltiples casos base en Fibonacci, para garantizar una comprensión integral.

Al final del laboratorio, no solo te hiciste hábil en escribir funciones recursivas, sino que también absorbiste la importancia de los casos base y la mecánica detrás de las llamadas recursivas. Ahora tienes la clave para utilizar algoritmos recursivos para resolver problemas del mundo real, una habilidad tan valiosa como el mítico Cristal Recursivo de Pythonesia mismo.