Recursion is a programming technique where a method calls itself to complete its purpose. It requires a base case, where the recursion ends, otherwise it causes infinite recursion. Recursion can be used to define mathematical concepts recursively, like factorials, and to write recursive methods in Java. For example, a recursive method can compute the sum of integers from 1 to N by defining the sum of N as N plus the sum of 1 to N-1. While recursion and iteration can solve the same problems, recursion is not always the most efficient approach.