It is trivial to write a recursive resolver. It is stupid hard to write a recursive resolver that can successfully talk to all the authoritative servers on the internet.
An often overlooked function of recursive implementers and operators is they are the glue that patches around bugs in client implementations and authoritative servers.