Применить рекурсию для переменных сбора атомов из списка - Lisp

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

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

Применить рекурсию для переменных сбора атомов из списка L устранить все произвольные численные атомы. Помогите решить на Lisp пожалуйста

Решение задачи: «Применить рекурсию для переменных сбора атомов из списка»

textual
Листинг программы
(defun del-num (lst)
  (cond ((null lst) nil)
        ((numberp (car lst)) (cons (car lst) (del-num (cdr lst))))
        (t (del-num (cdr lst)))))
 
==> DEL-NUM
 
(del-num '(1 q 2 w 3 e 4 r))
 
==> (1 2 3 4)

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

В коде определённая функция del-num с помощью рекурсии удаляет из списка все числовые элементы. В качестве начальной точки для рекурсии используется условие (null lst), которое проверяет, является ли список пустым. Если это так, то рекурсия завершается, и функция возвращает nil. В противном случае функция проверяет, является ли первый элемент списка числом с помощью функции numberp. Если это так, то этот элемент добавляется в новый список, а остальная часть списка передаётся в функцию del-num с помощью рекурсии. Если первый элемент не является числом, то функция del-num вызывается рекурсивно для оставшейся части списка, начиная с первого элемента, который не является числом. В данном примере функция del-num применяется к списку (1 q 2 w 3 e 4 r). Первый элемент (1) является числом, поэтому он добавляется в новый список. Затем функция вызывается рекурсивно для оставшейся части списка (q 2 w 3 e 4 r). После того как все числовые элементы удалены, оставшийся список (q 2 w 3 e 4) возвращается в качестве результата. Таким образом, результат выполнения кода будет (1 2 3 4).

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


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

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

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