From p. 319...


Checklist (ie, step by step instructions on how-to proceed), also from p.319...

  1. Define an interface with all the methods that both the base and recursive case classes must implement.
     

  2. Define one or more classes representing base cases. Make sure that all methods from the inerface are implemented. Convince yourself that the constructors and methods work correctly.

    You will probably be pretty convinced if you write a test client and run it to see that all is well!

  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. (ie, "closer to" the base case ) 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 the instance variables hold simpler objects.

StackOverflow if you go the wrong way... ie NOT "closer to" base case