Recursion in C programming is a technique where a function calls itself to solve a smaller instance of the same problem. Recursive functions are used to solve problems that can be divided into smaller, similar sub-problems. Examples include calculating factorials and performing quicksort.