Recursion in C allows functions to call themselves, known as recursive functions. Recursion can result in elegant code by breaking problems down into similar subproblems, but it risks infinite loops unless an exit condition is defined. Examples of using recursion in C include calculating factorials and generating the Fibonacci sequence, where recursive functions call themselves with decreasing arguments until a base case is reached.