The document discusses three fundamental algorithms paradigms: recursion, divide-and-conquer, and dynamic programming. Recursion uses method calls to break down problems into simpler subproblems. Divide-and-conquer divides problems into independent subproblems, solves each, and combines solutions. Dynamic programming breaks problems into overlapping subproblems and builds up solutions, storing results of subproblems to avoid recomputing them. Examples like mergesort and calculating Fibonacci numbers are provided to illustrate the approaches.