Boletín 209. Recursividad
Las funciones recursivas son una forma de solucionar con un código sencillo problemas a priori complejos de resolver.
Revisa el apartado Recursividad de la unidad.
Ejercicios
- Para cada función, lanza las excepciones que sean necesarias.
- Para cada función, realiza su documentación utilizando DocString.
- Captura todas las excepciones que puedan ocurrir durante el transcurso del script.
- Cuando se muestre un menú, cada opción tendrá asociada una letra. Según la letra introducida por el usuario, se realizará una operación u otra. Si se selecciona una letra que no esté en el menú deberá mostrarse por pantalla un error al usuario.
- No debes implementar las anotaciones de tipos de las funciones. Tan solo se indican en los enunciados para documentar las funciones.
Ejercicio 1. Crea una función recursiva decimal_to_binario(numero: int) -> str que obtenga el número binario de un número N decimal. Ayuda: https://ed.team/blog/sistemas-binarios-y-decimales.
Ejercicio 2. Crea una función recursiva suma_digitos(n: int) -> int en Python que calcule la suma de los dígitos de un número entero positivo. La suma de dígitos es el resultado de sumar todos los dígitos individuales de un número. Por ejemplo, para el número 1234, la suma de los dígitos es 1 + 2 + 3 + 4 = 10.
- La función debe incluir una condición base para el caso cuando
nes menor que 10 y por lo tanto tiene solo un dígito. - La función debe llamarse a sí misma para sumar el último dígito y la suma de los dígitos restantes del número.
Ejercicio 3. Crea una función recursiva potencia(base: int, exponente: int) -> int en Python que calcule la potencia de un número. La potencia de un número base elevado a exponente (base^exponente) se puede definir de forma recursiva. Por ejemplo, para calcular 2^3, multiplicamos 2 por sí mismo 3 veces.
- La función debe incluir condiciones base para los casos cuando el
exponentees 0 o 1. - La función debe llamarse a sí misma para calcular la potencia cuando
exponentees mayor que 1.
Ejercicio 4. Desarrolla un script en Python para determinar si una cadena de caracteres (palabra/frase) es palíndromo, es decir, si se puede leer igual de izquierda a derecha que de derecha a izquierda. Un ejemplo de palíndromo es la palabra radar.
Desarrolla la siguiente función recursiva:
- Función
palindromo: con los parámetros de entrada que considere necesarios para resolver de forma recursiva si una palabra/frase es palíndromo. El valor de retorno seráTrueoFalseen función del caso. (Ejemplo:radares palíndromo, por lo tanto, la función devolveráTrue).
En ese mismo script prueba la función obteniendo una palabra o frase por teclado y muestra por pantalla Palíndromo si es un palíndromo y No palíndromo en caso contrario.
Ejercicio 5. Crea en un script en Python una función recursiva: anagrama(palabra1: str, palabra2: str) -> boolean que indique si una de las palabras es o no un anagrama de la otra, es decir, que se puede obtener a partir de las letras de la otra sin más que reordenarlas.
Se considerará que las palabras están escritas en minúsculas, sin tilde ni otros signos diacríticos y sin espacios en blanco u otros caracteres distintos de los alfabéticos de la A a la Z.
Si las dos palabras son iguales también se considera que son anagrama.
En ese mismo script prueba la función obteniendo una palabra por teclado y muestra por pantalla Anagrama si es un anagrama y No anagrama en caso contrario.