Benutzer-Werkzeuge

Webseiten-Werkzeuge


rekursion:start

Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen angezeigt.

Link zu dieser Vergleichsansicht

Beide Seiten der vorigen RevisionVorhergehende Überarbeitung
Nächste Überarbeitung
Vorhergehende Überarbeitung
rekursion:start [2024/09/11 14:35] – [Aufgabe 4: Floodfill] Martin Pabstrekursion: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** (von lateinisch //recurrere// == „zurücklaufen“) 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). \\ \\ 
  
 **Wichtig:**  **Wichtig:** 
Zeile 189: Zeile 189:
 </WRAP> </WRAP>
  
-[[.hanoi:loesung:start8042|Lösung]]  \\ +[[.hanoi:loesung:start1832|Lösung]]  \\ 
  
  
Zeile 203: Zeile 203:
 Gegeben ist eine Pixelgrafik mit einem beliebig geformten, zusammenhängenden Gebiet von Pixeln einer Farbe. Gesucht ist ein Algorithmus, der - ausgehend von einem Pixel dieses Gebietes - alle damit verbundenen Pixel gleicher Farbe rot färbt. \\ \\  Gegeben ist eine Pixelgrafik mit einem beliebig geformten, zusammenhängenden Gebiet von Pixeln einer Farbe. Gesucht ist ein Algorithmus, der - ausgehend von einem Pixel dieses Gebietes - alle damit verbundenen Pixel gleicher Farbe rot färbt. \\ \\ 
 Ein Algorithmus, der dieses Problem löst, ist **Floodfill**. Er existiert in einer rekursiven Variante, die [[https://de.wikipedia.org/wiki/Floodfill|hier sehr anschaulich erklärt ist.]] Ein Algorithmus, der dieses Problem löst, ist **Floodfill**. Er existiert in einer rekursiven Variante, die [[https://de.wikipedia.org/wiki/Floodfill|hier sehr anschaulich erklärt ist.]]
 +\\ \\ 
 +Gegeben ist das Programmgerüst unten, bei dem bereits dafür gesorgt ist, dass bei Mausklick auf den Punkt (x, y) die Methode ''fill(x, y, newColor)'' aufgerufen wird. Ergänzen Sie die Methode ''fillIntntern'' so, dass ausgehend vom Punkt (x, y) alle gleichfarbigen, damit verbundenen Punkte in der neuen Farbe eingefärbt werden.
  
  
Zeile 236: Zeile 238:
       //  - Überprüfen, ob der Punkt (x,y) sich innerhalb der Bitmap befindet       //  - Überprüfen, ob der Punkt (x,y) sich innerhalb der Bitmap befindet
       //  - Überprüfen, ob der Punkt die Farbe oldColor besitzt       //  - Überprüfen, ob der Punkt die Farbe oldColor besitzt
-      //  - ggf. Einfärben des Punktes, und rekursive Methodenaufrufe für die benachbarten Punkte+      //  - ggf. Einfärben des Punktes (Methode setColor), und rekursive Methodenaufrufe für die benachbarten Punkte
  
  
Zeile 256: Zeile 258:
 </div> </div>
 </HTML> </HTML>
 +
 +[[.floodfillloesung:start1285|Lösung]]
 +
 +===== Aufgabe 5: größter gemeinsamer Teiler =====
 +<WRAP center round info 80%>
 +Sind $a, b \in \mathbb{N}$, so lässt sich der größte gemeinsame Teiler von $a$ und $b$ ("ggT(a, b)") auf folgende Art rekursiv berechnen:
 +\\ $ 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 ''MathTools'' mit einer Methode ''ggT'', die den ggT zweier Zahlen auf die oben beschriebene Art berechnet!
 +
 +</WRAP>
 +
 +[[.ggtLoesung:start|Lösung]]
rekursion/start.1726065322.txt.gz · Zuletzt geändert: 2024/09/11 14:35 von Martin Pabst

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki