[recursion] What is recursion and when should I use it?