Are there examples of recursion using only heap area?
In order for a function to be recursive, it must call itself at least once. When it calls itself, it places a pointer to itself on the stack for the recursive call's return. The stack, of course, is not the heap, and therefore a recursive function which uses only the heap is not possible.
(At least, not in C. Functional languages are optimized to re-use stack space and not allocate pointers for return calls)