Удалить из заданного списка пустые списки - Lisp

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

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

Помогите, пожалуйста, на Scheme: удалить из заданного списка пустые списки

Решение задачи: «Удалить из заданного списка пустые списки»

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

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

Функция del-null принимает в качестве аргумента список lst и возвращает новый список, в котором удалены все пустые списки.

  1. Если lst равно nil, то возвращаем nil.
  2. Если car lst равно nil, то рекурсивно вызываем del-null с аргументом cdr lst.
  3. Если car lst не равно nil, то возвращаем новый список, в котором первый элемент — car lst, а остальные элементы получены путем рекурсивного вызова del-null с аргументом cdr lst. Пример: (del-null '(1 2 nil 3 4 nil nil))
  4. car lst равно 1.
  5. cdr lst равно (2 nil 3 4 nil nil).
  6. car lst равно 2.
  7. cdr lst равно (3 4 nil nil).
  8. car lst равно 3.
  9. cdr lst равно (4 nil nil).
  10. car lst равно 4.
  11. cdr lst равно nil.
  12. Возвращаем (1 2 3 4).

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


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

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

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