

Prepara tus exámenes y mejora tus resultados gracias a la gran cantidad de recursos disponibles en Docsity
Gana puntos ayudando a otros estudiantes o consíguelos activando un Plan Premium
Prepara tus exámenes
Prepara tus exámenes y mejora tus resultados gracias a la gran cantidad de recursos disponibles en Docsity
Prepara tus exámenes con los documentos que comparten otros estudiantes como tú en Docsity
Encuentra los documentos específicos para los exámenes de tu universidad
Estudia con lecciones y exámenes resueltos basados en los programas académicos de las mejores universidades
Responde a preguntas de exámenes reales y pon a prueba tu preparación
Consigue puntos base para descargar
Gana puntos ayudando a otros estudiantes o consíguelos activando un Plan Premium
Comunidad
Pide ayuda a la comunidad y resuelve tus dudas de estudio
Ebooks gratuitos
Descarga nuestras guías gratuitas sobre técnicas de estudio, métodos para controlar la ansiedad y consejos para la tesis preparadas por los tutores de Docsity
Documento que contiene ejercicios relacionados con la recursividad en programación para la asignatura introducción a la programación de la carrera ingeniería técnica en informática de gestión. Contiene ejercicios para escribir procedimientos y funciones recursivas, calcular el máximo común divisor, elevar un número a una potencia, calcular la media de números, invertir la entrada de números, contar las cifras de un número, calcular conj(n,k) y realizar operaciones con monedas.
Tipo: Ejercicios
1 / 2
Esta página no es visible en la vista previa
¡No te pierdas las partes importantes!


1.- Escribe un procedimiento recursivo cuenta_atras que reciba como argumento un número n y como resultado escriba por pantalla la cuenta atrás como en un lanzamiento. Ejemplo : 5 4 3 2 1 CERO
2.- La función f está definida como:
n f n si n
si n f n
a) Escribe f como una función recursiva. b) ¿Qué hace f? c) ¿Qué tipo de recursividad has empleado en la implementación que has hecho de f? d) Si has implementado f como una función recursiva no final, entonces realiza una implementación que sea recursiva final. Si la implementaste de manera recursiva final, entonces realiza una implementación que no sea recursiva final. e) ¿Existe alguna manera de calcular f de forma no recursiva? En caso afirmativo escríbela así.
3.- Escribe una función recursiva que calcule el Máximo Común Divisor de dos números a y b utilizando el algoritmo de Euclides.
4.- Escribe una función recursiva elevar que reciba un argumento real a y otro entero b , con b > 0, y calcule a b.
5.- Escribe una función recursiva que reciba un argumento entero n y calcule
6.- Escribe una función recursiva media que vaya leyendo números hasta encontrar un 0, y que devuelva la media de esos números.
7.- Escribe un procedimiento recursivo repetir_entrada que vaya leyendo números y que los vaya escribiendo en el mismo orden.
n
8.- Escribe un procedimiento recursivo invertir_entrada que vaya leyendo números y que los vaya escribiendo en orden inverso.
9.- Escribe una función recursiva cifras que reciba un número en base 10 y devuelva cuántas cifras tiene ese número.
10.- Si conj(n,k) representa la cantidad de diferentes conjuntos de k personas que pueden formarse, dadas n personas entre las cuales elegir. Por ejemplo, conj (4,3) = 4, porque dadas cuatro personas A, B, C y D hay cuatro conjuntos posibles de tres personas: ABC, ABD, ACD y BCD. En general se cumple la siguiente relación: conj(n,k) = conj(n-1,k) + conj(n-1,k-1) Escribe una función recursiva para calcular conj(n,k) para n,k ≥ 1.
11.- Escribe una función recursiva digito que reciba un número n en base 10 y un entero pos y devuelva el dígito de n que se encuentra en la posición pos de derecha a izquierda y comenzando a contar desde 0. Es decir, tenemos que devolver el dígito de n que corresponde a 10 pos.
12.- Escribe una función recursiva binario_decimal que reciba un número en base 10 representando un número binario y devuelva el valor de ese número en decimal. Por ejemplo binario_decimal (1101) debe devolver 13, porque interpretamos 1101 como un número en base 2, aunque se recibe como un número en base 10 (mil ciento uno).
13.- ¿De cuantas formas diferentes se puede cambiar 1 euro si disponemos de monedas de 50, 20, 10, 5 y 1 céntimos de euro? Escribe una función que reciba como argumento una cierta cantidad de dinero en euros y devuelva el número de formas diferentes de cambiar esa cantidad usando monedas de 2 euros, 1 euro, y 50, 20, 10, 5 y 1 céntimos de euro. También nos podemos plantear construir un procedimiento general para contar de cuantas formas diferentes se puede cambiar una cierta cantidad de dinero usando monedas de ciertos valores. Como pista, decir que este problema tiene una solución relativamente sencilla como una función recursiva. Los tipos de moneda de que disponemos estarán dados en un cierto orden de acuerdo a su valor facial. Si queremos saber de cuantas formas se puede cambiar una cierta cantidad c de dinero usando n tipos de monedas. Si p es el valor del primer tipo de moneda (la de mayor valor que estamos usando), podemos cambiar esa cantidad c usando alguna moneda de valor p o sin usar ninguna. Entonces el número de formas diferentes de cambiar la cantidad c usando n tipos distintos de monedas es igual al número de formas de cambiar la cantidad c-p usando todos los tipos de monedas (estamos usando al menos una moneda de valor p ) más el número de formas de cambiar la cantidad c usando todos los tipos de moneda menos el primero (no estamos usando ninguna moneda de valor p ). Así, hemos dividido el problema original en dos subproblemas del mismo tipo pero más sencillos de resolver (cambiar una cantidad menor o cambiar la misma cantidad pero con un número menor de tipos de monedas). Podemos aplicar este esquema sucesivamente para resolver el problema. Así podremos implementar una función recursiva que calcule el número de formas diferentes que existe de cambiar una cierta cantidad usando monedas de determinados tipos.