Один общий список - 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 в качестве единственного элемента.

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


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

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

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