rekursion:start
Unterschiede
Hier werden die Unterschiede zwischen zwei Versionen angezeigt.
Beide Seiten der vorigen RevisionVorhergehende ÜberarbeitungNächste Überarbeitung | Vorhergehende Überarbeitung | ||
rekursion:start [2024/09/11 08:14] – [Aufgabe 1: Die Fibonacci-Folge] Martin Pabst | rekursion:start [2024/11/15 09:09] (aktuell) – [Aufgabe 5: größter gemeinsamer Teiler] Martin Pabst | ||
---|---|---|---|
Zeile 41: | Zeile 41: | ||
<WRAP center round info 60%> | <WRAP center round info 60%> | ||
**Definition: | **Definition: | ||
- | Von **Rekursion** spricht man, wenn sich eine Methode entweder direkt selbst aufruft oder über eine Aufrufkette (z.B. Methode a ruft Methode b auf, die ruft Methode c auf, diese wiederum ruft Methode a auf). \\ \\ | + | Von **Rekursion** |
**Wichtig: | **Wichtig: | ||
Zeile 189: | Zeile 189: | ||
</ | </ | ||
- | [[.hanoi: | + | [[.hanoi: |
Zeile 198: | Zeile 198: | ||
</ | </ | ||
+ | |||
+ | ===== Aufgabe 4: Floodfill ===== | ||
+ | <WRAP center round info 60%> | ||
+ | Gegeben ist eine Pixelgrafik mit einem beliebig geformten, zusammenhängenden Gebiet von Pixeln einer Farbe. Gesucht ist ein Algorithmus, | ||
+ | Ein Algorithmus, | ||
+ | \\ \\ | ||
+ | Gegeben ist das Programmgerüst unten, bei dem bereits dafür gesorgt ist, dass bei Mausklick auf den Punkt (x, y) die Methode '' | ||
+ | |||
+ | |||
+ | </ | ||
+ | |||
+ | < | ||
+ | |||
+ | <div class=" | ||
+ | |||
+ | <script type=" | ||
+ | new FloodfillExample(); | ||
+ | |||
+ | |||
+ | class FloodfillExample extends Bitmap { | ||
+ | |||
+ | | ||
+ | super(100, 100, 0, 0, 600, 600); | ||
+ | drawTestImage(); | ||
+ | | ||
+ | |||
+ | |||
+ | void fill(int x, int y, int newColor) { | ||
+ | int oldColor = getColorAsInt(x, | ||
+ | if(newColor == oldColor) { | ||
+ | | ||
+ | } | ||
+ | |||
+ | fillIntern(x, | ||
+ | } | ||
+ | |||
+ | | ||
+ | // TODO: | ||
+ | // - Überprüfen, | ||
+ | // - Überprüfen, | ||
+ | // - ggf. Einfärben des Punktes (Methode setColor), und rekursive Methodenaufrufe für die benachbarten Punkte | ||
+ | |||
+ | |||
+ | } | ||
+ | |||
+ | | ||
+ | Position position = this.screenCoordinatesToBitmapCoordinates(x, | ||
+ | this.fill(position.x, | ||
+ | } | ||
+ | |||
+ | void drawTestImage() { | ||
+ | for (int n = 0; n < 6000; n++) { | ||
+ | | ||
+ | |||
+ | } | ||
+ | } | ||
+ | } | ||
+ | </ | ||
+ | </ | ||
+ | </ | ||
+ | |||
+ | [[.floodfillloesung: | ||
+ | |||
+ | ===== Aufgabe 5: größter gemeinsamer Teiler ===== | ||
+ | <WRAP center round info 80%> | ||
+ | Sind $a, b \in \mathbb{N}$, | ||
+ | \\ $ ggT(a, b) = $ | ||
+ | * $a$, falls $a = b$, | ||
+ | * $ggT(b, a-b)$, falls $ a > b$ und | ||
+ | * $ggT(a, b - a)$, falls $a < b$. | ||
+ | |||
+ | Schreiben Sie eine Klasse '' | ||
+ | |||
+ | </ | ||
+ | |||
+ | [[.ggtLoesung: |
rekursion/start.1726042488.txt.gz · Zuletzt geändert: 2024/09/11 08:14 von Martin Pabst