2012-02-20 4 views
1

Скажите, что у меня есть предопределенная функция «sum» в другом месте.Рекурсия Lisp возвращает NIL

Я хочу подвести два списка после того, как я (setq a '(4 3 4)) и (setq b '(6 10 9))

И я (recurse a b).

Однако я продолжаю получать «ноль» в качестве возвращаемого значения. Что я делаю неправильно с этой рекурсией?

В настоящее время Trace не очень полезно.

(defun recurse (x y) 
    (cond 
     ((null x) nil)) 
     (t (sum (car x) (car y)) (recurse (cdr x) (cdr y))) 

    ) 
) 
+0

Вы вводите цифры и выбрасываете результаты. –

ответ

3

Вам необходимо забрать результаты; иначе они будут выброшены.

(defun recurse (x y) 
    (cond 
    ((null x) nil) 
    (t (cons (sum (car x) (car y)) 
      (recurse (cdr x) (cdr y)))))) 
+0

Небрежная ошибка .. Спасибо! – CyberShot

Смежные вопросы