Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > LISP > Lisp функция ONION


Автор: ausar 20.5.2009, 07:30
Помогите написать функцию из учебника она называется "луковица" (onion function) Суть в том чтобы при помощи рекурсии построить список с заданным уровнем вложенности. Например:
при вызове (onion LuK 4) выводится: ((((LUK)))). При вызове должен передваться параметр N - уровень вложенности и X - символ в центре луковицы. Получилось вот так но конечно же не работает

Код

(defun (ONION (X N) 
         (if (= n 0) n (cons (ONION (- n 1)) nil)
        )
)



Может кто знает как правильно? Помогите а?

Автор: VH_ 20.5.2009, 09:18
"Обычный" LISP:
Код
(defun ONION (X N) 
 (if (zerop N) X
  (cons (ONION X (1- N)) nil)))

Автор: ausar 20.5.2009, 09:31
Ой! VH большое спасибо! заработало!!

Автор: _sg 25.4.2014, 09:21
как вариант:
Код

(defun onion-n (n &optional (m n))
  (if (zerop n) m (list (onion-n (1- n) m))))
 
> (onion-n 7)
(((((((7)))))))

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)