Recursive List Design Pattern
(defn fn [lst] (if (empty? lst) ; test for base case baseanswer ; answer for base case (some-combination-of (something-about (first lst)) (fn (rest lst))) ) ) ; recursive call
The recursive version is often short and elegant, but it has a potential pitfall: it requires O(n) stack space on the function call stack. Many languages do not provide enough stack space for 1000 calls, but a linked list with 1000 elements is not unusual.