Recursión
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 naturalmente en términos de subproblemas más pequeños. La recursión proporciona una forma 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)
Avance 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, añade 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.
Swipe to start coding
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 recursión.
- 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
Can you explain what happens if there is no base case in a recursive function?
Can you show another example of recursion with a different problem?
What are some common mistakes to avoid when using recursion?
Awesome!
Completion rate improved to 4.17
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 naturalmente en términos de subproblemas más pequeños. La recursión proporciona una forma 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)
Avance 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, añade 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.
Swipe to start coding
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 recursión.
- 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