Удаление из списка - Lisp
Формулировка задачи:
Написать функцию удаления из списка первого встреченного элемента соответствующего указанному значению.
(Использовать рекурсию)
Как найти элемент - понятно, а как составить список без него?
(defun find(elem list) (cond ((null list) nil) ((eql (car list) elem) t) (t (find elem (cdr list))) ))
Решение задачи: «Удаление из списка»
textual
Листинг программы
(defun drop (e w) (cond ((null w) nil) ((equalp (car w) e) (cdr w)) (t (cons (car w) (drop e (cdr w)))))) > (drop 'b '(a b c)) (A C)
Объяснение кода листинга программы
В данном коде определён встроенный функциюм drop
, которая принимает два аргумента - e
и w
.
Если w
равно nil
, то возвращается nil
.
Если первый элемент w
равен e
, то возвращается cdr w
.
В противном случае, функция cons
создаёт новый список, в котором первый элемент - это car w
, а все остальные элементы - это результат вызова функции drop
с аргументами e
и cdr w
.
Пример использования функции drop
со списком (a b c)
и аргументом 'b'
показывает, что функция удаляет все вхождения аргумента из списка. В результате получается список (a C)
.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д