| | | Recursive Data Structures |
Recursive Data Structures
We talked in class about how to think about recursion:
- Define an interface with all of the methods that both base
case and recursive case classes must implement.
- 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.
- 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.
- 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
| | | Recursive Data Structures |