Common LISP (139 bytes)
(defun r(n)(do*(s(i 0(1+ i))(a 0(car s))(b 0(- a i)))((> i n)(nreverse s))(push(cond((= 0 i)0)((and(> b 0)(not(find b s)))b)(t(+ a i)))s))) Ungolfed:
(defun recaman (n) (do* (series ; starts as empty list (i 0 (1+ i)) ; index variable (last 0 (car s)) ; last number in the series (low 0 (- last i))) ((> i n) ; exit condition (nreverse series)) ; return value (push ; loop body (cond ((= 0 i) 0) ; first pass ((and (> low 0) (not (find low s))) low) (t (+ last i))) series)))