BroccoliTopRecursive Data Structures

Recursive Data Structures

We talked in class about how to think about recursion:

  1. Define an interface with all of the methods that both base case and recursive case classes must implement.
  2. Define one or more classes representing base cases. Make sure that all methods from the interface are implemented. Convince yourself that the constructors and methods work correctly.
  3. Define the constructors for recursive classes. Recursive calls of the constructor should only create objects that are simpler than the one being built by the constructor. Similarly, instance variables whose types are either the interface or class should only refer to objects simpler than the one being constructed. In particular, the construction of simpler objects in the constructor body should eventually end up at a base case. Convince yourself that the constructor will be correct under the assumption that the construction of simpler objects is correct.
  4. Write each method under the assumption that it works correctly on all simpler objects. Convince yourself that the methods will be correct under the assumption that instance variables hold simpler objects.

As an example, see Wiggly guy


BroccoliTopRecursive Data Structures