Základom môže byť zredukovaná všeobecná schéma spracovania na ľubovolnej úrovni. Výhodné je použiť funkciu max, vracajúcu maximálne číslo z argumentov. Vždy zisťujeme hĺbku s-výrazu vľavo (first) a vpravo (rest) a vyberám maximum.


(defun maxdeep (sv)
 (cond ((ATOM sv) 0)
       (T (max (+ 1 (maxdeep (first sv))) (+ 1 (maxdeep (rest sv)))))
 )
)

; Príklady:
(maxdeep '(a . b))       ; -> 1
(maxdeep '((a b c d)))   ; -> 5
(maxdeep '(a . (a . b))) ; -> 2

Autori[ ZADANIE | AKO ZAČAŤ | RIEŠENIE ]
Posledná aktualizácia 4. 9. 2001
back  home  next