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:

  1. 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.
  2. 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 n es 1 o 0, donde el factorial es 1.
    • Si n es mayor que 1, la función se llama a sí misma con n - 1, multiplicando n por el resultado de factorial(n - 1).

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 el n-ésimo número en la sucesión de Fibonacci usando recursividad.
    • El caso base es cuando n es 0 o 1.
    • Si n es mayor que 1, la función se llama a sí misma para calcular los dos números anteriores y los suma.

¿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...