Curso de python nivel medio
¿Qué es la recursividad?
La recursividad es una técnica de programación en la que una función se llama a sí misma para resolver un problema. Un problema se divide en subproblemas más pequeños, y la función resuelve cada subproblema llamándose a sí misma. Es especialmente útil para problemas que se pueden descomponer en tareas repetitivas más simples.
¿Cómo funciona la recursividad?
Para que la recursividad funcione correctamente, una función recursiva debe tener dos cosas:
- Caso base: La condición que detiene la recursión. Es la situación en la que la función deja de llamarse a sí misma.
- Llamada recursiva: La parte de la función que se llama a sí misma para resolver el problema.
Ejemplo de recursividad: Factorial de un número
El factorial de un número n (escrito como n!) es el producto de todos los números enteros positivos desde 1 hasta n. Por ejemplo, 5! = 5 * 4 * 3 * 2 * 1 = 120.
Podemos calcular el factorial de un número usando recursividad.
1def factorial(n): 2 # Caso base: si n es 1 o 0, el factorial es 1 3 if n == 1 or n == 0: 4 return 1 5 # Llamada recursiva: n * factorial de n-1 6 else: 7 return n * factorial(n - 1) 8 9# Llamar a la función y mostrar el resultado 10resultado = factorial(5) 11print(f"El factorial de 5 es: {resultado}")Salida de Consola!: El factorial de 5 es: 120
- ¿Qué hace este código?:
- Define una función
factorial(n)que calcula el factorial de un número usando recursividad. - El caso base es cuando
nes1o0, donde el factorial es1. - Si
nes mayor que1, la función se llama a sí misma conn - 1, multiplicandonpor el resultado defactorial(n - 1).
- Define una función
Ejemplo de recursividad: Sucesión de Fibonacci
La sucesión de Fibonacci es una serie de números en la que cada número es la suma de los dos anteriores. La serie comienza con 0 y 1, por lo que la secuencia es: 0, 1, 1, 2, 3, 5, 8, ....
Podemos calcular el n-ésimo número de la sucesión de Fibonacci usando recursividad.
1def fibonacci(n): 2 # Caso base: Fibonacci de 0 es 0, y de 1 es 1 3 if n == 0: 4 return 0 5 elif n == 1: 6 return 1 7 # Llamada recursiva: suma de los dos Fibonacci anteriores 8 else: 9 return fibonacci(n - 1) + fibonacci(n - 2) 10 11# Llamar a la función y mostrar el resultado 12resultado = fibonacci(6) 13print(f"El 6º número de la sucesión de Fibonacci es: {resultado}")Salida de Consola!: El 6º número de la sucesión de Fibonacci es: 8
- ¿Qué hace este código?:
- Define una función
fibonacci(n)que calcula eln-ésimo número en la sucesión de Fibonacci usando recursividad. - El caso base es cuando
nes0o1. - Si
nes mayor que1, la función se llama a sí misma para calcular los dos números anteriores y los suma.
- Define una función
¿Por qué usar recursividad?
La recursividad es útil cuando un problema se puede dividir naturalmente en subproblemas similares. Es una forma elegante y directa de resolver problemas como cálculos factoriales, secuencias como la de Fibonacci, recorridos en estructuras de datos como árboles, y muchos otros.
Precauciones con la recursividad
- Caso base: Siempre asegúrate de que tu función recursiva tenga un caso base para evitar llamadas infinitas y potencialmente bloquear tu programa.
- Eficiencia: A veces, la recursividad puede ser menos eficiente que otras soluciones iterativas debido al costo de las múltiples llamadas a funciones. Considera la eficiencia, especialmente con problemas como la sucesión de Fibonacci.
Conclusión
La recursividad es una técnica poderosa en Python que te permite resolver problemas complejos dividiéndolos en partes más simples y repetitivas. Entender cómo y cuándo usar recursividad es una habilidad importante para cualquier programador. ¡Practica escribiendo funciones recursivas y observa cómo puedes simplificar problemas complicados con esta técnica!
- Loading...