Удалить из заданного списка пустые списки - 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).

ИИ для рефератов и докладов


  • Экспорт Word по ГОСТу
  • Минимум 80% уникальности текста
  • Поиск релевантных источников в интернете
  • Готовый документ за 2 минуты

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

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