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.