Recursividad
Clase 18 de 31 • Curso de Introducción al Pensamiento Computacional con Python
Resumen
¿Qué es la recursividad en programación?
La recursividad es una técnica esencial en el campo de las ciencias de la computación, utilizada tanto a nivel algorítmico como programático. Su enfoque se basa en el principio de "divide y vencerás", donde un problema complejo se descompone en versiones más pequeñas y manejables del mismo problema. A nivel programático, se implementa haciendo que una función se llame a sí misma, lo cual es una poderosa herramienta para resolver tareas que se reducen a formas más simples de sí mismas, como veremos con el cálculo de factoriales.
¿Cómo se implementa la recursividad usando factoriales?
Para comprender mejor la recursividad, usaremos el cálculo de factoriales, un ejemplo clásico. El factorial de un número (n!) se define como el producto de todos los números enteros positivos menores o iguales a (n). La definición recursiva del factorial sería:
- n! = n * (n - 1)!, con el caso base como 1! = 1.
Así, para calcular el factorial de un número, descomponemos el problema en multiplicaciones de números sucesivamente menores, lo cual resulta en una estructura de llamada recursiva de funciones dentro de nuestro código.
¿Cómo se programa un factorial recursivo en Python?
Ahora veamos cómo implementar esta lógica en Python. Imagina que quieres crear una función que calcule el factorial de un número entero dado.
def factorial(n):
"""Calcula el factorial de n. n debe ser un entero positivo mayor que cero. Retorna n!."""
if n == 1:
return 1
else:
return n * factorial(n - 1)
# Solicitamos al usuario un número y mostramos su factorial
numero = int(input("Escribe un entero: "))
print(f"El factorial de {numero} es {factorial(numero)}")
En este código:
- Se define una función
factorial
que usa recursividad. - Se establece un caso base: cuando (n = 1), retorna 1, ya que el factorial de 1 es 1.
- Para cualquier (n > 1), la función retorna
n \* factorial(n - 1)
. - Se pide un número al usuario y se muestra el factorial calculado.
¿Qué ocurre al correr el script de factoriales?
Cuando ejecutas el script anterior, se muestra paso a paso cómo cada llamada recursiva se procesa hasta llegar al caso base. Aquí el seguimiento de print
dentro del código proporciona una útil técnica de depuración para entender el flujo de la recursividad.
Por ejemplo, para calcular el factorial de 4 se sigue el siguiente desdoblamiento:
- 4 * 3!
- 3 * 2!
- 2 * 1!
El resultado, al resolver cada paso, nos conduce finalmente a 24, que es el factorial de 4.
¿Qué más deberías saber sobre la recursividad?
Un aspecto crítico al trabajar con funciones recursivas es asegurar que siempre exista un caso base para evitar loopings infinitos. En lenguajes como Python, la pila de llamadas tiene un límite, así que sin un caso base, la recursividad puede llevar a un error de límite máximo de recursividad.
Si te interesa personalizar o entender más sobre los límites de la recursividad en Python, te animo a investigar cómo ajustarlos adecuadamente. Experimenta, aprende y no dudes en explorar cómo otros lenguajes implementan la recursividad. Esta práctica no solo ampliará tu comprensión sino que te convertirá en un programador más eficiente y versátil. ¡Continúa explorando y expandiendo tus horizontes!