Recursion
From HvWiki
See Recursion
Recursion is defining a function in terms of itself, this can in some cases make the solution to a problem very elegant and remove some sources of errors.
There are some problems, the code can at times be very confusing and hard to read. Another problem is that in many language implementations the size of the stack is unknown. Do you know the size of your C stack? Does your program know? Is it even constant? Lastly there are performance and memory concerns. Sometimes a problem can be solved simpler and faster without using recursion.
The conclusion is that recursion should be used where it is appropriate and not as a solution to every problem.
[edit]
Example
//This recursive program calculates the factorial of n unsigned int fact(unsigned int n) { if (n < 2) return 1; else return n * fact(n - 1); }

