single
Recursión
Desliza para mostrar el menú
Recursión es una técnica de programación donde una función se llama a sí misma para resolver un problema en partes más pequeñas. Es especialmente útil para problemas con estructura repetitiva o subproblemas naturales.
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 proporciona 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).
1234567def print_message(message, times): if times > 0: # Base case: stop when times is 0 print(message) print_message(message, times - 1) # Recursive case # Function call print_message("Hello, Recursion!", 3)
Analizar paso a paso para comprender cómo funciona este programa recursivo:
- Verificación de condición: si
times > 0, la función continúa. En este caso,times = 3, por lo que la condición es verdadera; - Impresión del mensaje: la función imprime
"Hello, Recursion!"; - Llamada recursiva: la función se llama a sí misma con
times - 1; - Repetición: este proceso continúa hasta que
timeses igual a 0; - Finalización: cuando la condición
times > 0ya no es verdadera, la recursión se detiene y el programa finaliza.
Resultado: El mensaje "Hello, Recursion!" se imprime tres veces.
Comprensión del flujo:
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 rastrea las llamadas activas de funciones). La función sigue llamándose a sí misma con un valor de times menor. Una vez que alcanza el caso base (times == 0), se detiene. Luego, cada llamada previa se completa una por una en orden inverso. Este comportamiento de retroceso es esencial para el funcionamiento de la recursión.
Desliza para comenzar a programar
Dada una cadena que representa un número de teléfono, la cual puede contener espacios, guiones, paréntesis u otros caracteres no numéricos. El objetivo es extraer únicamente los dígitos utilizando recursividad.
- Si la cadena de entrada
numberestá vacía, devolver una cadena vacía. - Comprobar si el primer carácter de la cadena
numberes un dígito utilizando el métodoisdigit()en una condiciónif. - Si es un dígito, concatenarlo con el resultado de una llamada recursiva a
format_phone_number, pasando la subcadena que comienza desde el segundo carácter. - Si no es un dígito, realizar una llamada recursiva a
format_phone_number, omitiendo el primer carácter.
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