Однократная замена выражения x на y в списке l - Lisp
Формулировка задачи:
Написать рекурсивную функцию, заменяющую в списке l первое вхождение x на y. Список задать при вызове функции.
Решение задачи: «Однократная замена выражения x на y в списке l»
textual
Листинг программы
(defun change (w a b) (when w (if (equalp (car w) a) (cons b (cdr w)) (cons (car w) (change (cdr w) a b))))) > (change '(1 2 3 1 2) 2 20) (1 20 3 1 2
Объяснение кода листинга программы
В коде определён функцией change
с тремя аргументами w
, a
, b
.
Если w
не равно nil
, то выполняется следующая последовательность действий:
- Если первый элемент
w
равенa
, то возвращается новая список, в котором этот элемент заменён наb
. - Если первый элемент
w
не равенa
, то рекурсивно вызывается функцияchange
сcdr w
иa
,b
в качестве аргументов. - Если
w
равноnil
, то возвращаетсяnil
. Меняем 2-й элемент списка '(1 2 3 1 2) на 20, получаем '(1 20 3 1 2).
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д