Программа на Лиспе, которая создает подсписок с каждым шагом - PullRequest
0 голосов
/ 24 сентября 2018

В настоящее время я работаю над программой, которая увеличивает список и создает подсписок в списке каждый раз, когда он увеличивается.например, если бы у меня был список

(1 2 3 4 5 6)

.Затем я хочу увеличить его и создать

(1 (2 (3 (4 (5 (6))))))

.Пока что у меня есть:

(defun INCREMENT (L) (unless (endp L) (cons (list (first L)) (INC (rest L)))))

, но все это вернется:

((1) (2) (3) (4))

Я знаю, что это просто увеличение количества раз, которое список используется вместе с просмотром элементов спискано я все еще изучаю синтаксис Lisp.Кто-нибудь может мне помочь с этим?

1 Ответ

0 голосов
/ 24 сентября 2018

Вот возможное решение, хитрость заключается в том, чтобы использовать list перед вызовом рекурсии.Также обратите внимание, что мы должны обработать базовые случаи: когда список пуст и когда остался только один элемент:

(defun INCREMENT (L)
  (cond ((endp L) '())
        ((endp (rest L)) (list (first L)))
        (t (cons (first L)
                 (list (INCREMENT (rest L)))))))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...