Visualize recursion trees and derive time complexity!
T(n) = T(n-1) + c
Example: Sum of N, Factorial
O(n)
T(n) = T(n/2) + c
Example: Binary Search
O(log n)
T(n) = 2T(n/2) + n
Example: Merge Sort
O(n log n)
T(n) = 2T(n-1) + c
Example: Naive Fibonacci
O(2^n)
Each level does constant work, n levels total
T(n) = aT(n/b) + f(n)
f(n) < n^(log_b(a))
f(n) = n^(log_b(a))
f(n) > n^(log_b(a))