08-05-2013, 13:25
Holaaa a todos!
Tengo un problema con estos ejercicios de recursividad:
1) Definir la función sinExtremos, que recibe una lista de números y devuelve lo que resulta de sacar los números máximo y el mínimo. P.ej. se espera que
Main> sinExtremos [38,3,86,341,29,42,35,9]
[38,86,29,42,35,9].
Nota: Si la lista tiene menos de dos elementos, sinExtremos debe devolver la lista vacía.
2) 1.12.2. Definir la función sinPuntas/2, que generaliza sinExtremos diciendo cuántos quiero sacar
de cada punta. P.ej. se espera que
Main> sinPuntas 2 [38,3,86,341,29,42,35,9]
[38,29,42,35].
¿Cómo se puede definir sinExtremos usando sinPuntas?
Para el primero, hice esto:
Pero me devuelve la lista vacía
Lo pude resolver por lista por compresión, asi:
Pero la guía es de Recursividad, y no se me ocurre cómo hacerlo.
Muchas gracias por su ayuda!
Tengo un problema con estos ejercicios de recursividad:
1) Definir la función sinExtremos, que recibe una lista de números y devuelve lo que resulta de sacar los números máximo y el mínimo. P.ej. se espera que
Main> sinExtremos [38,3,86,341,29,42,35,9]
[38,86,29,42,35,9].
Nota: Si la lista tiene menos de dos elementos, sinExtremos debe devolver la lista vacía.
2) 1.12.2. Definir la función sinPuntas/2, que generaliza sinExtremos diciendo cuántos quiero sacar
de cada punta. P.ej. se espera que
Main> sinPuntas 2 [38,3,86,341,29,42,35,9]
[38,29,42,35].
¿Cómo se puede definir sinExtremos usando sinPuntas?
Para el primero, hice esto:
sinExtremos [] = []
sinExtremos (x:y:[]) = []
sinExtremos (x:xs)
|x/=(maximum (x:xs)) && x/=(minimum (x:xs))=(x : sinExtremos xs)
|otherwise = sinExtremos xs
Pero me devuelve la lista vacía
Lo pude resolver por lista por compresión, asi:
sinExtremos' lista = [x | x <- lista, x /= (maximum lista), x /= (minimum lista)]
Pero la guía es de Recursividad, y no se me ocurre cómo hacerlo.
Muchas gracias por su ayuda!