Пересечение списков-множеств - Lisp (229144)

Узнай цену своей работы

Формулировка задачи:

Здравствуйте, помогите, пожалуйста, решить задачу. Заранее благодарна. Определите функцию, зависящую от двух аргументов u и v, являющихся списками, которая вычисляет список всех элементов, содержащихся одновременно и в u, и в v. Применить простую рекурсию. язык lisp.

Решение задачи: «Пересечение списков-множеств»

textual
Листинг программы
  1. (defun inters (u v)
  2.   ;; если u пуст, то пусто и пересечение
  3.   (cond ((null u) nil)
  4.         ;; если голова u входит в v, то присоединим голову
  5.         ;; к рек. вызову нашей функции на хвосте первого аргумента
  6.         ((member (car u) v) (cons (car u) (inters (cdr u) v)))
  7.         ;; если голова u не входит в v - то отбросим ее, и вызовем нашей функции
  8.         ;; на хвосте первого аргумента
  9.         (t (inters (cdr u) v))))
  10.  
  11. (trace inters)
  12.  
  13. ==> INTERS
  14. (inters '(a b c d e) '(c d e f g))
  15.  
  16. Вход в функцию inters Аргументы: (A B C D E) (C D E F G)
  17.   Вход в функцию inters Аргументы: (B C D E) (C D E F G)
  18.     Вход в функцию inters Аргументы: (C D E) (C D E F G)
  19.       Вход в функцию inters Аргументы: (D E) (C D E F G)
  20.         Вход в функцию inters Аргументы: (E) (C D E F G)
  21.           Вход в функцию inters Аргументы: NIL (C D E F G)
  22.           Возврат из функции inters Результат: NIL
  23.         Возврат из функции inters Результат: (E)
  24.       Возврат из функции inters Результат: (D E)
  25.     Возврат из функции inters Результат: (C D E)
  26.   Возврат из функции inters Результат: (C D E)
  27. Возврат из функции inters Результат: (C D E)
  28.  
  29. ==> (C D E)

Объяснение кода листинга программы

  1. Функция inters принимает два аргумента u и v.
  2. Если u пуст, то возвращает nil.
  3. Если первый элемент u содержится в v, то возвращает новый список, где первый элемент - это первый элемент u, а остальные элементы - результат вызова функции inters для оставшейся части u и v.
  4. Если первый элемент u не содержится в v, то возвращает результат вызова функции inters для оставшейся части u и v.
  5. Результатом работы функции inters для аргументов (a b c d e) и (c d e f g) будет список (c d e).
  6. Отслеживание вызовов функции inters показывает, что функция вызывается рекурсивно для каждого элемента первого аргумента, пока не будет достигнут конечный результат.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

8   голосов , оценка 3.625 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы