Замена IF на COND - Lisp

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

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

Есть код, помогите заменить в нем IF на COND:
Листинг программы
  1. (defun F (Lst Obj1 Obj2)
  2. (if Lst
  3. (cons
  4. (if (equal (car Lst) Obj1) Obj2 (car Lst))
  5. (F (cdr Lst) Obj1 Obj2))))

Решение задачи: «Замена IF на COND»

textual
Листинг программы
  1. (defun F (Lst Obj1 Obj2)
  2.  (cond ((null Lst) nil)
  3.        (t (cons (cond ((equalp (car Lst) Obj1) Obj2)
  4.                       (t (car Lst)))
  5.                 (F (cdr Lst) Obj1 Obj2)))))

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

В данном коде определен функционал, который реализует рекурсивную функцию с тремя аргументами. При этом в условии cond проверяется, является ли список Lst пустым. Если это так, то возвращается nil. В противном случае, когда список не пуст, происходит рекурсивный вызов функции F с двумя аргументами: cdr Lst и Obj1, Obj2. В главной ветке cond проверяется, является ли первый элемент списка car Lst равным Obj1. Если это так, то возвращается Obj2. В противном случае, возвращается первый элемент списка car Lst. Список переменных:

  1. Lst - список, с которым работает функция
  2. Obj1 - первый объект для сравнения
  3. Obj2 - второй объект для сравнения Список значений переменных:
  4. Lst - список, содержащий элементы для обработки
  5. Obj1 - объект для сравнения
  6. Obj2 - объект для сравнения

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


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

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

15   голосов , оценка 4 из 5

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

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

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