Обратить список и все его подсписки на любом уровне - Lisp

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

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

1. Определите функцию, обращающую список и все его подсписки на любом уровне, например, (a b (c d) e) -> (e (d c) b a). Я пользуюсь HomeLisp, не могли бы написать, я не понимаю.

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

textual
Листинг программы
(defun rev-all (lst &optional (r nil))
  (cond ((null lst) r)
        ((listp (car lst)) (rev-all (cdr lst) (cons (rev-all (car lst)) r)))
        (t (rev-all (cdr lst) (cons (car lst) r)))))
 
==> REV-ALL
 
(rev-all '(a b (c d) e)) 
 
==> (E (D C) B A)

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


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

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

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