Turtlegrafik für Smartphones und Tablets

Entwicklungsprojekt PHBern  
HomeOnline-Editor startenDruckenAndroid GamesJava-Online

Rekursionen


Rekursion ist ein Lösungsverfahren, bei dem ein Problem auf das Gleiche, aber etwas vereinfachte Problem zurückgeführt wird. In Java ist eine Methode dann rekursiv, wenn in ihrem Deklarationsteil dieselbe Methode aufgerufen wird. Damit sich ein rekursives Programm nicht endlos aufruft, braucht es eine Abbruchbedingung ("Verankerung"). Turtlegrafik eignet sich hervorragend für die Programmierung von Rekursionen. Unter dem Menüpunkt "Bekannte Rekursionen" findet man weitere schöne Rekursionen.
Die erste Rekursion zeichnet ein Quadratmuster. Wenn man die beiden auskommentierten Zeilen aktiviert, erhält man noch schönere Muster.

Source mit Online-Compiler bearbeiten

App installieren auf Smartphoneoder Tablet

QR-Code

Sources downloaden (Tu12.zip)

// Tu12.java

package app.tu12;

import turtle.*;

public class Tu12 extends Playground
{
  void main()
  {
    ht();
    square(0, 0, 64);
  }

  void square(double x, double y, double s)
  {
    if (s < 1)
      return;
     
    setPos(x - s/2, y - s/2);
    for(int = 0; i < 4; i++)
    {
      fd(s);
      rt(90);
    }
    square(x + s, y + s, s/2);
    square(x - s, y + s, s/2);
    // square(x + s, y - s, s/2);
    // square(x - s, y - s, s/2);
  }  
}
 

Erklärungen zum Programmcode:

square(0, 0, 64); Das erste Quadrat wird an der Position (0, 0) und mit der Seitenlänge 64 gezeichnet
square(x + s, y + s, s/2); Jedes nächste Quadrat wird an einer neuen Position und mit der halben Seitenlänge gezeichnet
return Die Methode kehr zurück (Verankerung)

 

Der Binärbaum ist wohl eine der bekanntesten Rekursionen. Die Grundfigur hat die Form eines Y.

Source mit Online-Compiler bearbeiten

App installieren auf Smartphone oder Tablet

QR-Code

Sources downloaden (Tree.zip)

// Tree.java

package app.tree;

import turtle.*;

public class Tree extends Playground
{  
  public void main()
  {
    setY(-100);
    tree(128);
  }

  void tree(int s)
  {
    if (s < 8)
      return;
    fd(s);
    lt(45);
    tree(s / 2);
    rt(90);
    tree(s / 2);
    lt(45);
    bk(s);
  }
}
 

 

Die Flocke ist eine Kombination von Iteration und Rekursion.

Source mit Online-Compiler bearbeiten

App installieren auf Smartphone, Tablet oder Emulator

QR-Code

Sources downloaden (Flock.zip)

// Flock.java

package app.flock;

import turtle.*;

public class Flock extends Playground
{
  void main()
  {
    flock(100);
  }

  void flock(int s)
  {
    if (s < 5)
      return;
    for (int = 0; i < 6; i++)
    {
      fd(s);
      flock(s / 3);
      bk(s);
      rt(60);
    }
  }
}