Слияние упорядоченных списков - Lisp
Формулировка задачи:
Даны два упорядоченных по возрастанию числовых списка. Объединить их с сохранением упорядоченности.
Пример: (1 2 5 6 11) и (-1 0 3 4 7 15) должны дать (-1 0 1 2 3 4 5 6 7 11 15)
Решение задачи: «Слияние упорядоченных списков»
textual
Листинг программы
(defun a-merge (w v) (cond ((null w) v) ((null v) w) ((<= (car w) (car v)) (cons (car w) (a-merge (cdr w) v))) ((cons (car v) (a-merge w (cdr v)))))) > (a-merge '(1 4 5 6 12) '(2 3 4 5)) (1 2 3 4 4 5 5 6 12)
Объяснение кода листинга программы
В этом коде определён вспомогательный функционал для слияния двух упорядоченных списков в один.
a-merge
— это функция с двумя позиционными аргументамиw
иv
.- Если
w
— этоnil
, то возвращаетсяv
. - Если
v
— этоnil
, то возвращаетсяw
. - Если
car(w)
не большеcar(v)
, то возвращаетсяcons(car(w))
с добавлениемa-merge(cdr(w), v)
. - В противном случае возвращается
cons(car(v))
с добавлениемa-merge(w, cdr(v))
.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д