type 'a lst = NIL | C of 'a * 'a lst;;
C (3.3, C (2.3, NIL));;
The above works. I think that it once required ocaml -rectypes. This, this and this says that it is still required. The manual and 4.00.1 OCaml are out of sync. I suppose that the option should remain for compatibility but the manual should say that it is a vestigial no-op.

Non Bug ID = 0005881

Garriques replies: There is a misunderstanding here. The term "recursive type" stands for a structural recursive type, such as ((int * 'a) as 'a). Such type requires the -rectypes flag. This is not to be confused with recursive datatypes, which are part of the original language specification, and of course require no specific flag.
Yes