single
Recursión
Desliza para mostrar el menú
Una función recursiva es una función que se llama a sí misma para resolver un problema dividiéndolo en partes más pequeñas y simples.
Los elementos clave de la recursión son:
- Caso base: la condición que detiene la recursión;
- Caso recursivo: la parte donde la función se llama a sí misma con una entrada más simple.
¿Por qué usar recursión?
Algunos problemas pueden expresarse de forma natural en términos de subproblemas más pequeños. La recursión ofrece una manera clara y elegante de resolverlos haciendo que una función se llame a sí misma para manejar los casos más simples. Es comúnmente utilizada en tareas como el procesamiento de árboles, la exploración de rutas o la descomposición de estructuras (por ejemplo, listas, cadenas).
Un ejemplo sencillo
123456def print_message(message, times): if times > 0: # Base case: stop when times is 0 print(message) print_message(message, times - 1) # Recursive case print_message("Hello, Recursion!", 3)
Analizar paso a paso para comprender cómo funciona:
times = 3→ la condición es verdadera, imprime el mensaje, llama aprint_message(message, 2);times = 2→ la condición es verdadera, imprime el mensaje, llama aprint_message(message, 1);times = 1→ la condición es verdadera, imprime el mensaje, llama aprint_message(message, 0);times = 0→ la condición es falsa, la recursión se detiene.
Resultado: el mensaje se imprime tres veces.
La pila de llamadas
Cada vez que la función se llama a sí misma, agrega un nuevo marco a la pila de llamadas — una estructura de memoria que realiza un seguimiento de las llamadas activas a funciones. Una vez que se alcanza el caso base, cada llamada previa se completa una por una en orden inverso.
Toda función recursiva debe tener un caso base. Sin él, la función se llamará a sí misma indefinidamente y provocará un RecursionError.
Desliza para comenzar a programar
Implementar una función recursiva list_sum que calcule la suma de todos los elementos en una lista.
- Si la lista
numbersestá vacía, devolver0— este es el caso base; - De lo contrario, devolver el primer elemento sumado al resultado de una llamada recursiva con el resto de la lista.
Solución
¡Gracias por tus comentarios!
single
Pregunte a AI
Pregunte a AI
Pregunte lo que quiera o pruebe una de las preguntas sugeridas para comenzar nuestra charla