SLIDE 2 L - 7
PictureWorld Example
Suppose we have the following two methods:
public Picture triangles(Color c1, Color c2) public Picture LL(Picture p) p
Goal
Overlay
LL(triangleDesign( 3,Color.red,Color.blue)) triangles(Color.red,Color.blue) L - 8
triangleDesign Method
L - 9
JEM
if (steps <= 1) { // base case return triangles(c1, c2); } else { // recursive case Picture p1 = triangleDesign(steps-1, c1, c2); Picture p2 = triangles(c1, c2); return overlay(LL(p1), p2); }
this steps c1 c2
triangleDesign
4 rtw
Execution Land
red blue
if (steps <= 1) { // base case return triangles(c1, c2); } else { // recursive case Picture p1 = triangleDesign(steps-1, c1, c2); Picture p2 = triangles(c1, c2); return overlay(LL(p1), p2); }
this steps c1 c2
triangleDesign
3 rtw red blue
if (steps <= 1) { // base case return triangles(c1, c2); } else { // recursive case Picture p1 = triangleDesign(steps-1, c1, c2); Picture p2 = triangles(c1, c2); return overlay(LL(p1), p2); }
this steps c1 c2
triangleDesign
1 rtw red blue
if (steps <= 1) { // base case return triangles(c1, c2); } else { // recursive case Picture p1 = triangleDesign(steps-1, c1, c2); Picture p2 = triangles(c1, c2); return overlay(LL(p1), p2); }
this steps c1 c2
triangleDesign
2 rtw red blue
L - 10
JEM
if (steps <= 1) { // base case return triangles(c1, c2); } else { // recursive case Picture p1 = triangleDesign(steps-1, c1, c2); Picture p2 = triangles(c1, c2); return overlay(LL(p1), p2); }
this steps c1 c2
triangleDesign
4 rtw
Execution Land
red blue
if (steps <= 1) { // base case return triangles(c1, c2); } else { // recursive case Picture p1 = triangleDesign(steps-1, c1, c2); Picture p2 = triangles(c1, c2); return overlay(LL(p1), p2); }
this steps c1 c2
triangleDesign
3 rtw red blue
if (steps <= 1) { // base case return triangles(c1, c2); } else { // recursive case Picture p1 = triangleDesign(steps-1, c1, c2); Picture p2 = triangles(c1, c2); return overlay(LL(p1), p2); }
this steps c1 c2
triangleDesign
1 rtw red blue
if (steps <= 1) { // base case return triangles(c1, c2); } else { // recursive case Picture p1 = triangleDesign(steps-1, c1, c2); Picture p2 = triangles(c1, c2); return overlay(LL(p1), p2); }
this steps c1 c2
triangleDesign
2 rtw red blue return
L - 11
JEM
if (steps <= 1) { // base case return triangles(c1, c2); } else { // recursive case Picture p1 = triangleDesign(steps-1, c1, c2); Picture p2 = triangles(c1, c2); return overlay(LL(p1), p2); }
this steps c1 c2
triangleDesign
4 rtw
Execution Land
red blue
if (steps <= 1) { // base case return triangles(c1, c2); } else { // recursive case Picture p1 = triangleDesign(steps-1, c1, c2); Picture p2 = triangles(c1, c2); return overlay(LL(p1), p2); }
this steps c1 c2
triangleDesign
3 rtw red blue
if (steps <= 1) { // base case return triangles(c1, c2); } else { // recursive case Picture p1 = triangleDesign(steps-1, c1, c2); Picture p2 = triangles(c1, c2); return overlay(LL(p1), p2); }
this steps c1 c2
triangleDesign
2 rtw red blue return p2 p1 p1 p2 ? ?
L - 12
JEM
if (steps <= 1) { // base case return triangles(c1, c2); } else { // recursive case Picture p1 = triangleDesign(steps-1, c1, c2); Picture p2 = triangles(c1, c2); return overlay(LL(p1), p2); }
this steps c1 c2
triangleDesign
4 rtw
Execution Land
red blue
if (steps <= 1) { // base case return triangles(c1, c2); } else { // recursive case Picture p1 = triangleDesign(steps-1, c1, c2); Picture p2 = triangles(c1, c2); return overlay(LL(p1), p2); }
this steps c1 c2
triangleDesign
3 rtw red blue return p2 p1 p1 p2 ? ?