Está en la página 1de 2

RECURSIVIDAD

a) Eliminar un elemento de la lista


CL-USER 1 > (DEFUN eliminar (x lista)
(cond ((endp lista) lista)
((equal x (CAR lista)) (CDR lista))
(T (cons (CAR lista) (eliminar x (CDR lista))))))
ELIMINAR

CL-USER 2> ELIMINAR 4 '(5 2 3 0 4 8)


(5 2 3 0 8)

b) Factorial de un número
CL-USER 1> (DEFUN factorial (n)
(if (= n 0) 1
(* n (factorial (- n 1)))
)
)
FACTORIAL
CL-USER 2> FACTORIAL
120
c) Verificar si un elemento pertenece a una lita
CL-USER 1> (DEFUN pertenece (x lista)
(if (endp lista)
nil
(if (= x (car lista))
lista
(pertenece x (cdr lista))
)
)
)
PERTENECE

CL-USER 2> (PERTENECE 6 '(4 1 20 3 6))


(6)

d) Suma de elementos impares de una lista


CL-USER 1> (DEFUN suma_impares( lista )
(cond ((null lista) 0)
((oddp (car lista)) (+ (car lista) (suma_impares (cdr lista))))
(t (suma_impares (cdr lista))) ) )
SUMA_IMPARES
CL-USER 2> (SUMA_IMPARES '(1 2 3 4 5 6))
9

También podría gustarte