Определить функцию, объединяющую атомы двух списков С ИСПОЛЬЗОВАНИЕМ ПАРАЛЛЕЛЬНОЙ РЕКУРСИИ - Lisp

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

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

Помогите определить функцию, объединяющую атомы двух списков в один ассоциативный список ((x1.y1)(x2.y2)(x3.y3) ... ...) а) для списка из атомов б) для списка, содержащего подсписки Все эти задачи необходимо решить с использованием параллельной рекурсии - помогли на форуме разобраться, как сделать без рекурсии, а вот с параллельной рекурсией как - ума не приложу

Решение задачи: «Определить функцию, объединяющую атомы двух списков С ИСПОЛЬЗОВАНИЕМ ПАРАЛЛЕЛЬНОЙ РЕКУРСИИ»

textual
Листинг программы
(defun bind (w v)
  (when w (cons (cons (car w) (car v)) (bind (cdr w) (cdr v)))))
 
> (bind '(a b c) '(1 2 3))
((A . 1) (B . 2) (C . 3))

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

В данном коде определена функция bind, которая принимает два аргумента w и v. Если w не равно nil, то из него берется первый элемент (car w), который соединяется со вторым элементом (car v) и добавляется в начало результата. Затем функция рекурсивно вызывается для оставшейся части списка w и v. Если w равно nil, то результатом будет текущий результат. При вызове функции с аргументами '(a b c) и '(1 2 3), первым элементом w будет 'a, который соединится со вторым элементом v, то есть 1, и добавится в начало результата. Затем функция вызывается рекурсивно для оставшейся части списков, то есть для '(b c) и '(2 3). В итоге получается список ((A . 1) (B . 2) (C . 3)).

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


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

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

6   голосов , оценка 3.833 из 5
Похожие ответы