Показать сообщение отдельно
  (#3 (permalink)) Старый
CatsTail CatsTail вне форума
Member
 
Сообщений: 13
Сказал(а) спасибо: 1
Поблагодарили 4 раз(а) в 4 сообщениях
Регистрация: 08.06.2012
По умолчанию 29.01.2013, 19:26

Рекурисия:

lisp Код:
(defun task (lst &optional z)
  (cond ((<= (length lst) 2) lst)
        ((< (car lst) 0) (cons (* z (cadr lst)) (task (cdr lst) nil)))
        ((< (cadr lst) 0) (cons (car lst) (cons (* (car lst) (caddr lst)) (task (cddr lst) (cadr lst)))))
        (t (cons (car lst) (task (cdr lst) nil)))))

==> task

(task '(1 -1 5 6 7 -8 -5 6 -1))

==> (1 5 5 6 7 -35 -48 6 -1)

(task '(1 -1 5 6 7 -8 22 -5 6 -1))

==> (1 5 5 6 7 154 22 132 6 -1)
Ответить с цитированием
Ads