Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > LISP > Теоретико-множественная разность списков


Автор: Horror89 26.4.2010, 21:07
Здравствуйте , возникла проблема с выполнением задания на Lisp .
Задача располагалось в разделе рекурсии , я пока в принципе не много Lisp знаю и с самой целью задачи не разбирался. Был бы очень благодарен если бы мне кто нибудь объяснил рекурсию на конкретных программных примерах(lisp) , а не в математическом виде.
А если кто-то поможет и с самой задачей был бы ещё более благодарен =)))
Вот собственно задача.

Разработать функцию, находящую теоретико-множественную разность двух списков.
Например:
Вход: (1 2 3 4 5), (4 5 6 7).
Выход: (1 2 3). 

Автор: _sg 22.12.2012, 22:42
Код

(defun our-set-difference (w v)
  (cond ((null w) w)
        ((member (car w) v) (our-set-difference (cdr w) v))
        ((cons (car w) (our-set-difference (cdr w) v)))))

> (our-set-difference '(1 2 3 4 5) '(4 5 6 7))
(1 2 3)

Автор: _sg 25.4.2014, 16:42
Код

(defun our-set-difference (w v)
  (when w (if (member (car w) v)
              (our-set-difference (cdr w) v)
              (cons (car w) (our-set-difference (cdr w) v)))))

> (our-set-difference '(1 2 3 4 5) '(4 5 6 7))
(1 2 3)

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)