Пересечение списков-множеств - Lisp (229144)
Формулировка задачи:
Здравствуйте, помогите, пожалуйста, решить задачу. Заранее благодарна.
Определите функцию, зависящую от двух аргументов u и v, являющихся списками, которая вычисляет список всех элементов, содержащихся одновременно и в u, и в v. Применить простую рекурсию. язык lisp.
Решение задачи: «Пересечение списков-множеств»
textual
Листинг программы
(defun inters (u v) ;; если u пуст, то пусто и пересечение (cond ((null u) nil) ;; если голова u входит в v, то присоединим голову ;; к рек. вызову нашей функции на хвосте первого аргумента ((member (car u) v) (cons (car u) (inters (cdr u) v))) ;; если голова u не входит в v - то отбросим ее, и вызовем нашей функции ;; на хвосте первого аргумента (t (inters (cdr u) v)))) (trace inters) ==> INTERS (inters '(a b c d e) '(c d e f g)) Вход в функцию inters Аргументы: (A B C D E) (C D E F G) Вход в функцию inters Аргументы: (B C D E) (C D E F G) Вход в функцию inters Аргументы: (C D E) (C D E F G) Вход в функцию inters Аргументы: (D E) (C D E F G) Вход в функцию inters Аргументы: (E) (C D E F G) Вход в функцию inters Аргументы: NIL (C D E F G) Возврат из функции inters Результат: NIL Возврат из функции inters Результат: (E) Возврат из функции inters Результат: (D E) Возврат из функции inters Результат: (C D E) Возврат из функции inters Результат: (C D E) Возврат из функции inters Результат: (C D E) ==> (C D E)
Объяснение кода листинга программы
- Функция
inters
принимает два аргументаu
иv
. - Если
u
пуст, то возвращаетnil
. - Если первый элемент
u
содержится вv
, то возвращает новый список, где первый элемент - это первый элементu
, а остальные элементы - результат вызова функцииinters
для оставшейся частиu
иv
. - Если первый элемент
u
не содержится вv
, то возвращает результат вызова функцииinters
для оставшейся частиu
иv
. - Результатом работы функции
inters
для аргументов(a b c d e)
и(c d e f g)
будет список(c d e)
. - Отслеживание вызовов функции
inters
показывает, что функция вызывается рекурсивно для каждого элемента первого аргумента, пока не будет достигнут конечный результат.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д