Das berühmte Sierpinsky-Dreieck wird ohne die in den vorangegangenen Beispielen verwendete Klasse Turtle realisiert. Die Rekursion kommt dabei so zu Stande, dass die Figur so lange verkleinert an einer neuen (``passenden'') Rekursion gezeichnet wird, bis die Basisgröße der Figur eine bestimmte Größe unterschreitet...
import java.awt.*;
import java.applet.*;
public class Sierpinsky extends Applet {
public void paint (Graphics g) {
sierpinsky(this,300,150,0);
}
public void sierpinsky(Container ct, double c, double x, double y) {
Graphics g = ct.getGraphics();
if (c>2) {
sierpinsky(ct, c/2, x-c/4, y+c/4);
sierpinsky(ct, c/2, x+c/4, y+c/4);
sierpinsky(ct, c/2, x, y);
g.drawLine((int) x, (int) y, (int) (x-c/2), (int) (y+c/2));
g.drawLine((int) (x-c/2), (int) (y+c/2), (int) (x+c/2), (int) (y+c/2));
g.drawLine((int) (x+c/2), (int) (y+c/2), (int) x, (int) y);
}
}
}
Beachte, wie die Seitenlänge der Dreiecke bei jedem Aufruf jeweils halbiert wird! Da die Graphics-Methode drawLine() nur geradzahlige Parameter akzeptiert, müssen die Werte zunächst nach Integer-Zahlen gecastet werden.