Está en la página 1de 2

Programación de Computadoras II - Cursada 2020

Lic.en Sistemas -Sede Atlántica - UNRN


Práctica Nro 2 - Recursión
Bibliografía de Base
● Introducción a la Programación con C. Andrés Marzal, Isabel Gracia. (Cap. 3.6 )
● Fundamentos de Programación. Libro de Problemas. Joyanes
Aguilar L., Fernandez M., Rodríguez L. Mc Graw Hill. 2003.
(Cap. 14)

int myFun (int n){


if (n == 0)
return 0
else
return (n + myFun (n-1));

A. Analice el concepto de recursión trabajado en la clase. En función del mismo y a


partir de las imágenes siguientes, cómo definiría los conceptos de: caso base, caso
general?.
B. Qué distingue al caso base del caso general (o recursivo)
C. ¿Cuáles son los criterios que permiten determinar si un algoritmo es recursivo?.
D. ¿Cuál es la estructura de control que se utiliza para implementar la recursión?
E. Durante la ejecuciòn de una funciòn recursiva, què sucede en cada invocaciòn del
caso general con los parámetros y las variables locales de la función?. Explique y
presente un ejemplo en forma gráfica

Aplicación
2- Resolución de Problemas usando Recursión
Còmo resolverìa el conocido investigador Sherlock Holmes un caso de asesinato?
A. Lo hizo el mayordomo
B. 1) Primero pregunta a un testigo, y 2) luego interroga a la víctima
C. 1) Elimina a uno de los testigos, y 2) elimina a los testigos restantes
D. 1) Cuando queda un solo sospechoso, entonces fue quien lo hizo y resuelto el caso,
2)Examina la evidencia para descartar un sospechoso, luego descarta los sospechosos
restante

Implementación de Recursión en C
1) Realice un módulo recursivo que lea una secuencia de números enteros, finalizada en
999 y los muestre por pantalla en orden inverso al ingresado. Sin utilizar ninguna
estructura auxiliar. Por ejemplo, si se ingresa: 5 8 3 2 999, deberá imprimirse 2 3 8 5.
2) Dados dos números enteros a y b, calcule su producto en forma recursiva.
Ej: 7x3 = 7 + (7x2) = 7 + 7 + (7x1) = 7 + 7 + 7 + 0 = 21

Pág. 1
Programación de Computadoras II - Cursada 2020
Lic.en Sistemas -Sede Atlántica - UNRN
3) Desarrolle un módulo que dado un número entero positivo lo convierta en binario de
forma recursiva. Ej: 5 -> 101

Recursividad & Estructuras de Datos


4) Dado un arreglo con elementos enteros, determine en forma recursiva la
a) posición del valor mínimo del arreglo int minimo (int A[], int n).
b) buscar un elemento aplicando la búsqueda binaria. Hay alguna restricción para el
algoritmo
5) Implemente en forma recursiva sobre una lista enlazadas de elementos enteros, las
operaciones de:
a) Calcular el tamaño de la lista
b) Determinar si la lista está ordenada
c) Eliminar un nodo dada una posición: Lista * eliminarNodoPos(Lista * l, int k)
d) Combinar dos lista en una: Lista * combinarListas(Lista * a, Lista * b)
6) Ordenamiento de un arreglo de enteros usando el método Merge sort. Este método
de ordenamiento trabaja así: dada una lista la divide en dos mitades, ordena
cada mitad (para lo cual puedo aplicar recursión) y después intercala las mitades.
(el procedimiento para intercalar es muy simple: comparó las cabezas de las
listas y tomo la menor). Ej:

Implemente la solución recursivamente

Pág. 2

También podría gustarte