No recursion needed, just plain ole nested for loops
(defn subs
[seq]
(let [c (count seq)]
(remove empty?
(for [x (range c) y (range (- (inc c) x))]
(take y (drop x seq))))))
and another one
(defn subs
[seq]
(letfn [(take-len [f s] (take (count s) (iterate f s)))]
(mapcat #(reverse (take-len butlast %)) (take-len next seq))))
Just noticed this is about the same as e-i-s's version. Had been trying to roll my own version of butlast (because of the symmetry with "iterate next"), but none were making things more succinct than the nested for loops. Until I found butlast on clojuredocs.
Anyways, try out the 4clojure problems. Not being able to get to the answers really forces you to find an answer, any answer that works, and if you're doing/have done that you'll find a more elegant one. And if you got no idea, there's usually answers of other users that will enlighten or inspire after you solved it.
(2 3), could you then get all subsequences of(1 2 3)?