Want recursion is a client request attribute. A server can do with 'go ash him' but a basic DNS gethostbyname library routine just wants the final answer. I suppose a DNS server might exist that can be configured to forward requests with recursion wanted. It would have a more meager cache, but if it is sharing a slow connection, it gets a quicker answer from a better connected correspondent DNS server up the chain. An absolute root server (com, net,org) might refuse to do recursion -- they are too busy as it is. Google 'DNS Recursion' and lo and behold,
http://technet.microsoft.com/en-us/l.../cc771738.aspx it is an anti-DenialOfService trick to not accept recursive requests. In this case, no simple clients can connect, just other DNS servers, so you need a ring of recursion-enabled DNS servers around your simple clients. A caching no-domain DNS server is a nice thing to have as locally as possible, so you can keep asking for the same host (or address or other query) and get a local, cached answer quickly. The DNS service to support your domain (or your addresses in their pseudo domain) is really a completely separate function from a DNS server to answer queries about other domains. Caching is a dual edged sword, though, as it can be poisoned. Hackers send an unsolicited packet with bad information as if responding to a request, and the DNS server accepts and saves it. That seems a worse problem then Denial Of Service from queries to domains with infinite loops of redirection.
If there are no cache hits, a query, recursive or not, will eventually go to the authoritative source. However, any DNS server on your query's path may have a non-authoritative answer in cache to any of the multiple queries needed to finally answer your query: a.b.c.d may go to d, c.d, b.c.d to get a.b.c.d in the end.