Understanding Recursion

What is recursion? What is head-recursion and tail-recursion? Should we use recursive or non-recursive functions?