There are two main ways to show that an algorithm works correctly: testing and proofs of correctness. Testing an algorithm on sample inputs can find bugs but does not guarantee correctness. Proving correctness mathematically is better but more difficult. To prove the correctness of a recursive algorithm, it must be proved by mathematical induction that each recursive call solves a smaller subproblem and that the base cases are solved correctly. Examples are given of using induction to prove the correctness of recursive algorithms for calculating Fibonacci numbers, finding the maximum value, and multiplying numbers.