This document provides an overview of algorithms and recursion from a lecture. It discusses performance analysis using Big O notation. Common time complexities like O(1), O(n), O(n^2) are introduced. The document defines an algorithm as a set of well-defined steps to solve a problem and categorizes algorithms as recursive vs iterative, logical, serial/parallel/distributed, deterministic/non-deterministic, exact/approximate, and quantum. Examples of recursive algorithms like factorials, greatest common divisor, and the Fibonacci sequence are presented along with their recursive definitions and code implementations.