# Recursion Recursive functions must have both: - one or more base cases - a recursive case The base cases are required to ensure the recursion stops when meeting a condition The recursive case adds functions onto the call stack and completes each one top down. Note. Quicksort should be implemented using a random pivot to ensure average runtimes.