Один общий список - Lisp

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

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

Здравствуйте, нужно создать один список из подсписков, например: (ft '(a b (c d) f)) результат: (a b c d f)
(defun ft(s)
( cond
    ((null s) ())
    ((listp (car s)) (ft(car s)))
    (T (cons (car s) (ft (cdr s))))
)
)
У меня получается только (a b c d) подскажите как исправить.

Решение задачи: «Один общий список»

textual
Листинг программы
(defun ft (s)
(cond ((null s) ())
      ((listp (car s)) (append (ft (car s)) (ft (cdr s))))
      (T (cons (car s) (ft (cdr s))))))

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

В данном коде определена функция ft, которая принимает один аргумент s. Если s равно nil, то функция возвращает (). Если s является списком, то функция рекурсивно вызывает саму себя для первого элемента списка, а затем объединяет результат с остальной частью списка. Если s не является списком, то функция возвращает новый список, содержащий s в качестве единственного элемента.

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


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

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

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