Základom je zredukovaná všeobecná schéma spracovania na ľubovolnej úrovni.
Výhodné je použiť funkciu max, vracajúcu maximálne číslo z argumentov. Výhodné je tiež použiť pomocný argument.
(defun maxzozpom (sv poc)
(cond ((ATOM sv) poc)
(T (max (maxzozpom (first sv) 0) (maxzozpom (rest sv) (+ poc 1))))
)
)
; V hlavnej funkcii inicializujem maxzozpom na 0.
(defun maxzoz (sv)
(maxzozpom sv 0)
)
; Príklady:
(maxzoz '(1 2 (1 2 3 4 5) 4)) ; -> 5
(maxzoz '(1 2 (1 (1) 3 4 (1)) (4))) ; -> 5