Recursion
Also known as: Recursive algorithm
Recursion solves a problem by calling the same procedure on a smaller instance until a base case. The call stack holds return addresses and local frames; deep recursion can overflow even when the math is fine.
It is the natural expression of divide and conquer, DFS on trees/graphs, and backtracking. Tail-recursive forms can be rewritten as loops; languages differ on whether they optimize that.
Always state the base case and the measure that decreases. Infinite recursion is usually a missing base case or a measure that does not shrink.