Unit 10: Recursion

Recursive methods, base cases, tracing recursion, and recursive sorting

Unit Resources

Select a resource below to start studying.

📚Study Guide: Recursion

Unit 10: Recursion

Recursion is a problem-solving technique where a method calls itself to solve a smaller instance of the same problem. This unit challenges students to think differently about repetition, replacing iterative loops with self-referential method calls. Every recursive method must have two essential components: a base case (or cases) that stops the recursion, and a recursive case that breaks the problem into smaller subproblems and calls the method again with modified parameters. Without a proper base case, recursion leads to infinite calls and a StackOverflowError as the call stack grows without bound. The AP exam tests recursion through tracing (predicting output or return values), writing recursive methods (especially for arrays and strings), and understanding recursive data structures like linked lists and trees. Common recursive patterns include factorial (n! = n * (n-1)!), Fibonacci, string reversal, binary search, and merge sort. Students must be able to trace recursive calls by drawing a call stack diagram, showing each method invocation with its parameter values and return values. Tail recursion, where the recursive call is the last operation, can theoretically be optimized but is not guaranteed in Java. Understanding that recursive solutions are often elegant but may be less efficient than iterative counterparts (due to stack overhead and repeated calculations in naive Fibonacci) is important for evaluating trade-offs.

Key Concepts

  • Base Case: The condition under which the recursion stops and a direct value is returned. Every recursive method must have at least one base case, and it must be reachable.
  • Recursive Case: The part of the method where it calls itself with a modified parameter that moves closer to the base case. The problem must get smaller with each call.
  • Call Stack: Each recursive call pushes a new stack frame containing parameters and local variables. When a base case returns, frames pop off the stack, and return values propagate back up.
  • Tracing Recursion: Write each call on a new line with indentation showing depth. Record parameter values and return values to avoid losing track.
  • Recursive Algorithms: Factorial: n! = n * factorial(n-1), base case n <= 1. Fibonacci: fib(n) = fib(n-1) + fib(n-2), base cases n == 0 or 1. Binary search: divide sorted array in half, recurse on appropriate half. Merge sort: divide array, recursively sort halves, merge results.
  • Helper Methods: Often used to expose a clean public interface while the recursive logic uses additional parameters (e.g., indices) to track state.

Vocabulary

  • Recursion: A programming technique in which a method calls itself to solve a problem by breaking it into smaller, self-similar subproblems.
  • Base Case: A condition in a recursive method that returns a value without making further recursive calls, terminating the recursion.
  • Recursive Call: The act of a method invoking itself within its own body.
  • Stack Overflow: A runtime error that occurs when the call stack exceeds its maximum size, typically caused by infinite or excessively deep recursion.
  • Divide and Conquer: An algorithm design paradigm that recursively breaks a problem into subproblems, solves them independently, and combines the results.
  • Tail Recursion: A form of recursion where the recursive call is the very last operation in the method; can be optimized by some compilers to reuse the stack frame.

Essential Formulas / Syntax Patterns

  • public int factorial(int n) { if (n <= 1) return 1; return n * factorial(n - 1); }
  • public int fib(int n) { if (n <= 1) return n; return fib(n-1) + fib(n-2); }
  • public void reversePrint(int[] arr, int index) { if (index < 0) return; System.out.println(arr[index]); reversePrint(arr, index - 1); }

Common Mistakes

  • Missing or Incorrect Base Case: Without a base case, recursion never stops, causing StackOverflowError. With a wrong base case (e.g., factorial(0) returning 0 instead of 1), results are incorrect.
  • Not Making Progress Toward Base Case: If the recursive call does not change parameters toward the base case, infinite recursion results. Ensure n decreases, index increases, or the problem shrinks.
  • Exponential Time in Naive Recursion: The naive Fibonacci implementation has O(2^n) time due to repeated calculations. For large n, iterative or memoized versions are necessary.
  • Confusing Return Values in Tracing: When tracing, remember that the return value of a recursive call is used in the expression of the caller. Write return values next to each call.

AP Exam Strategies

  • Always Identify Base and Recursive Cases First: Before writing code, state the base case clearly and explain how the recursive case makes progress toward it.
  • Draw the Call Stack: For tracing questions, draw a vertical stack of method calls with parameters. Show return values bubbling up from the bottom.
  • Use Helper Methods for Index Tracking: When processing arrays or strings recursively, use a helper method with index parameters to avoid creating new objects at each step.
  • Convert Iterative to Recursive (and vice versa): Practice rewriting simple loops (sum, count, max) as recursive methods to understand the correspondence between iteration and recursion.

Real-World Applications

  • File System Traversal: Operating systems use recursion to navigate directories and subdirectories, calculating total sizes or searching for files.
  • JSON and XML Parsing: Hierarchical data formats are naturally parsed with recursive descent parsers that match nested structures.
  • Artificial Intelligence: Game trees in chess and Go are explored recursively using minimax algorithms with alpha-beta pruning to evaluate millions of positions.

Practice Quiz: Recursion

Answer each question one at a time. Click an option to select your answer.

Question 1 of 150
Question
Loading...
Click to flip
Answer
Loading...
Click to flip back 🔀 Shuffle
1 / 45

🎥Free Video Lessons: Recursion

Watch these unit review videos directly on our site.

AP Computer Science A Unit 10 Review - Recursive Methods - Recursion, Searching, Sorting - CSA by Meek Extra Help

AP Computer Science A Unit 10 Review Video by Free Coding Academy

APCS Unit 10: Recursion In-Depth Review and Practice Test by AP Computer Science A

📄Cheat Sheet: Recursion

Quick reference for Recursion. Print this out and review before the exam!

Unit 10: Recursion - Cheat Sheet

Required Components

  • Base case(s) -> stop recursion
  • Recursive case -> call self with smaller problem

Common Patterns

  • Factorial: n * factorial(n-1), base n <= 1
  • Fibonacci: fib(n-1) + fib(n-2), base n <= 1
  • Reverse print: print last, recurse on rest
  • Binary search: mid, recurse on half
  • Merge sort: split, sort halves, merge

Tracing Technique

  • Draw call stack vertically
  • Write parameters at each level
  • Show return values bubbling up

Helper Methods

  • Use extra parameters (indices) to track state
  • Public method calls private recursive helper

Problem-Solving Quick Reference

  • Always verify base case is reachable
  • Ensure recursive call moves toward base case
  • Naive Fibonacci is O(2^n); use iteration or memoization for large n
  • StackOverflowError = infinite recursion or too deep

🔬Ultimate Review Packet Materials

Download official review materials for this unit.

No URP materials available for this unit yet.

Check back soon for study guides, practice questions, and review videos.

← Back to AP Computer Science A