Однократная замена выражения x на y в списке l - Lisp

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

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

Написать рекурсивную функцию, заменяющую в списке l первое вхождение x на y. Список задать при вызове функции.

Решение задачи: «Однократная замена выражения x на y в списке l»

textual
Листинг программы
  1. (defun change (w a b)
  2.   (when w (if (equalp (car w) a) (cons b (cdr w))
  3.               (cons (car w) (change (cdr w) a b)))))
  4.  
  5. > (change '(1 2 3 1 2) 2 20)
  6. (1 20 3 1 2

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

В коде определён функцией change с тремя аргументами w, a, b. Если w не равно nil, то выполняется следующая последовательность действий:

  1. Если первый элемент w равен a, то возвращается новая список, в котором этот элемент заменён на b.
  2. Если первый элемент w не равен a, то рекурсивно вызывается функция change с cdr w и a, b в качестве аргументов.
  3. Если w равно nil, то возвращается nil. Меняем 2-й элемент списка '(1 2 3 1 2) на 20, получаем '(1 20 3 1 2).

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


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

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

7   голосов , оценка 3.857 из 5

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

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

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