Не портит ответ, но вот подсказка того, что вы могли ожидать:
(defun sum-lists% (x y z) ...)
(defun sum-lists (x y) ... )
Трассировка обеих функций:
(trace sum-lists sum-lists%)
Ваш пример:
(sum-lists '(1 2 3) '(3 4 6))
0: (SUM-LISTS (1 2 3) (3 4 6))
1: (SUM-LISTS% (1 2 3) (3 4 6) 0)
2: (SUM-LISTS% (2 3) (4 6) 3)
3: (SUM-LISTS% (3) (6) 11)
4: (SUM-LISTS% NIL NIL 29)
4: SUM-LISTS% returned 29
3: SUM-LISTS% returned 29
2: SUM-LISTS% returned 29
1: SUM-LISTS% returned 29
0: SUM-LISTS returned 29
И если вы позаботитесь о угловых коробках, вы также можете иметь:
(sum-lists '(1 2 3 4) '(3 4))
0: (SUM-LISTS (1 2 3 4) (3 4))
1: (SUM-LISTS% (1 2 3 4) (3 4) 0)
2: (SUM-LISTS% (2 3 4) (4) 3)
3: (SUM-LISTS% (3 4) NIL 11)
4: (SUM-LISTS% (4) NIL 14)
5: (SUM-LISTS% NIL NIL 18)
5: SUM-LISTS% returned 18
4: SUM-LISTS% returned 18
3: SUM-LISTS% returned 18
2: SUM-LISTS% returned 18
1: SUM-LISTS% returned 18
0: SUM-LISTS returned 18