Está en la página 1de 3

EJERCICIOS DE RECURSIVIDAD APLICADOS EN LISTAS

1. Suma de los elementos de una lista L


CL-USER 1 > (defun suma (L)( if(null L) 0 (+ (car L) (suma (cdr L)))))
SUMA
CL-USER 2 > suma '(1 2 3 4)
10
2. Cuenta las sublistas dentro de una lista L"
CL-USER 3 >
(defun sublistas (L) (cond ((or (null L) (atom L)) 0)
(t (+ (if (atom (car L)) 0 1) (sublistas (car L))
(sublistas (cdr L))))))
SUBLISTAS
CL-USER 4 > (sublistas '(a (b c(d))(e f)))
3
3. Cuenta los tomos de una lista L
CL-USER 5>
(defun cuenta-atomos (L)(cond ((null expr) 0)((atom L) 1)(t (+ (cuenta-atomos
(car L))(cuenta-atomos (cdr L))))))
CUENTA-ATOMOS
CL-USER 6> (cuenta-atomos '(1 3 4 6))
4
4. Cuenta los elementos de una lista L (tomos o sublistas)
CL-USER 7 > (defun contar(L)(if(endp L) 0 (if(atom(car L))
(+ 1 (contar(cdr L)))
(+ (contar(car L)) (contar(cdr L)))
)))
CONTAR
CL-USER 8 > (contar '(1 4 6 8 4))
5
5. Producto de los elementos de una lista L
CL-USER 9> (defun producto (L)(if (null L) 1 (* (car L) (producto (cdr L)))))
PRODUCTO
CL-USER 10 > producto '(1 3 4)
12

6. Contar los elementos pares de una lista L


CL-USER 11> (defun par(n)(if (eq (mod n 2) 1) 0 1))
PAR
CL-USER 12 > (defun pares(L)(if (null L) 0 (+ (par(car L)) (pares(cdr L)))))
PARES
CL-USER 13 > pares '(2 4 5 6 8)
4
7. Buscar un elemento n en una lista L
CL-USER 14 > (defun busca (n L)(if (null L) Nil (if (eq n (car L)) T (busca n
(cdr L)))))
BUSCA
CL-USER 15 > (busca 2 '(3 4 5))
NIL
CL-USER 16 > (busca 2 '(3 2 6))
T
8. Obtener el nmero de elementos repetidos de una lista L
CL-USER 17 > (defun repetidos (L)(if (null L) 0 (if (eq (busca (car L) (cdr L)) t)
(+ 1 (repetidos (cdr L)))(+ 0 (repetidos (cdr L))))))
REPETIDOS
CL-USER 18 > repetidos '(2 3 4 5 6)
0
CL-USER 19 > repetidos '(1 1 1 1 3 3 3 2)
5
9. Obtener el mayor elemento de una lista L
CL-USER 20 > (defun mayor(L)(if (null L) 0 (if (> (car L) (mayor(cdr L))) (car
L) (mayor (cdr L)))))
MAYOR
CL-USER 21 > (mayor '(1 4 2 6 4 2))
6

10. Remueve los contenedores de las sublistas de una lista L


CL-USER 22 > (defun remuevesublistas (L)
(cond
((null L) NIL)
((atom (car L))
(cons
(car L)
(remuevesublistas (cdr L))))
(t (append
(remuevesublistas (car L))
(remuevesublistas (cdr L))))))
REMUEVESUBLISTAS
CL-USER 23 > remuevesublistas '((2 3) 5 (a (f (3 4))))
(2 3 5 A F 3 4)

También podría gustarte