Está en la página 1de 1

Terminación de Programas Funcionales

Algoritmos y Estructuras de Datos I


Segundo cuatrimestre de 2004

Los números de ejercicio hacen referencia a la práctica de Programación Funcional - Avanzada, salvo indicación
contraria.
Ejercicio 1. En el ejercicio 3 de la práctica de Programación Funcional - Inicial se pide programar una función
para calcular el máximo común divisor (especificada en el ejercicio 29.1 de la práctica de Lógica y Especificación).
Demostrar que la función termina.

Ejercicio 2. En el ejercicio 1 se pide programar una función para ordenar una lista (especificada en el ejercicio
9.5 de la práctica de Tipos Compuestos). Una posible solución es el algoritmo QuickSort, que puede definirse así:

qsort [] = []

qsort (x:xs) = qsort menores_que_x ++ [x] ++ qsort mayores_que_x


where
menores_que_x = [y | y <- xs, y < x]
mayores_que_x = [y | y <- xs, y >= x]

Demostrar que QuickSort termina.

Ejercicio 3. Demostrar que la función palabraMasLarga definida en el ejercicio 3.4 termina.

Ejercicio 4. Demostrar que la función nat2bin definida en el ejercicio 3.9 termina.

Ejercicio 5. Decir qué condiciones debe cumplir la reducción del ejercicio 5 para que la función definida termine.

Ejercicio 6. Demostrar que las funciones igual y suma del ejercicio 9 termina.

Ejercicio 7. Demostrar que la función Evaluar definida en el ejercicio 11 termina.

También podría gustarte