This prelab asks you to practice using and understanding recursion. Please don't spend more than 15-20 minutes on each part.
Below are the declarations for two classes: a
ThrowerWorld class that is a subclass of
BuggleWorld and a ThrowerBuggle class that
is a subclass of Buggle.
// a BuggleWorld in which Buggles throw Bagels
public class ThrowerWorld extends BuggleWorld {
public void run () {
ThrowerBuggle tara = new ThrowerBuggle();
tara.throwBagel(3);
}
}
class ThrowerBuggle extends Buggle {
public void throwBagel (int distance) {
if (distance == 0) {
dropBagel();
} else {
forward();
throwBagel(distance - 1);
backward();
}
}
}
Task 1a) Draw the result (in a ThrowerWorld
grid) of asking tara to throw bagels at distances of 0,
1, 2, 3, 4, and 5. Use a different grid for each distance. The size
of the grid doesn't matter (just make it large enough so the buggle
doesn't run into walls). When given recursive code, it is usually a
good idea to draw on paper a couple of instances of running the code
beginning with the easiest case and working up.
Task 1b) Draw a Java Execution Model diagram that shows all
of the execution frames created by invoking the run()
method on an instance of the ThrowerWorld class. Your
diagram should depict the point in time when the invocation of
run() returns. Although Java can discard an execution
frame when control returns from it, you should not discard any frames
when drawing your diagram.
Below is the skeleton of the triangle method of the
TriangleBuggle class which extends
Buggle:
public void triangle(int size) {
// add your code here
}
Your task is to define the triangle method using a
recursive strategy. The output from creating a TriangleBuggle
tria and starting her at point (5,2) and
headed in the direction North before asking her to draw triangles of
different sizes is shown below.
![]() tria.triangle(0); |
![]() tria.triangle(1); |
![]() tria.triangle(2); |
![]() tria.triangle(3); |
![]() tria.triangle(4); |
![]() tria.triangle(5); |
When writing the triangle method, you can assume that
the TriangleBuggle has plenty of space to move around
(ie don't worry about bumping into walls).