Recursion allows a method to call itself, either directly or indirectly. The document discusses examples of calculating factorials and generating all 0/1 vectors recursively. It also describes an algorithm to find all paths from the start to end of a labyrinth recursively by exploring neighbor cells. Recursion can be harmful if it leads to excessive memory usage from redundant calculations; techniques like memoization can help address this. Overall, recursion is well-suited for combinatorial and other algorithms, but iteration may be preferable for problems that could result in inefficient recursion.