schule:rekursion
Unterschiede
Hier werden die Unterschiede zwischen zwei Versionen angezeigt.
Beide Seiten der vorigen RevisionVorhergehende ÜberarbeitungNächste Überarbeitung | Vorhergehende ÜberarbeitungLetzte ÜberarbeitungBeide Seiten der Revision | ||
schule:rekursion [2017-01-29 10:22] – +Kochkurve marco.bakera | schule:rekursion [2021-06-10 07:15] – [Beispiel: Anzahl Elemente einer Liste] pintman | ||
---|---|---|---|
Zeile 37: | Zeile 37: | ||
<code python> | <code python> | ||
- | anzahl(liste): | + | def anzahl(liste): |
anzahl = 0 | anzahl = 0 | ||
for element in liste: | for element in liste: | ||
Zeile 48: | Zeile 48: | ||
<code python> | <code python> | ||
- | anzahl(liste): | + | def anzahl(liste): |
if liste ist leer: | if liste ist leer: | ||
return 0 | return 0 | ||
else: | else: | ||
- | liste_kleiner = liste.entferneErstesElement() | + | liste_kleiner = liste[1:] # entferne erstes Element |
return 1 + anzahl(liste_kleiner) | return 1 + anzahl(liste_kleiner) | ||
</ | </ | ||
+ | |||
+ | Erinnerung: mit '' | ||
+ | Wird a oder b weggelassen, | ||
+ | [[https:// | ||
Zeile 112: | Zeile 116: | ||
{{: | {{: | ||
- | In den [[https:// | + | Bei den Materialien findest du Informationen darüber, wie eine Strecke zwischen zwei Punkten A und B mit einem rekursiven Verfahren auf dem Bildschirm ausgegeben werden kann. |
Wie sieht der einfache Fall aus? | Wie sieht der einfache Fall aus? | ||
- | Vervollständige den Algorithmus | + | Vervollständige den folgenden |
+ | |||
+ | <code python> | ||
+ | from tkinter import Tk, Canvas | ||
+ | |||
+ | class App: | ||
+ | def __init__(self): | ||
+ | fenster = Tk() | ||
+ | |||
+ | self.canv = Canvas(fenster, | ||
+ | self.canv.pack() | ||
+ | |||
+ | self.strecke(10, | ||
+ | fenster.mainloop() | ||
+ | |||
+ | def markiere(self, | ||
+ | self.canv.create_rectangle(x, | ||
+ | |||
+ | |||
+ | def strecke(self, | ||
+ | # Hier muss eine Strecke rekursiv gezeichnet werden | ||
+ | # if Punkte a und b benachbart: | ||
+ | # | ||
+ | # else: | ||
+ | # | ||
+ | # | ||
+ | # | ||
+ | pass | ||
+ | |||
+ | app = App() | ||
+ | </ | ||
===== Übung Kochkurve ===== | ===== Übung Kochkurve ===== | ||
+ | |||
+ | {{: | ||
Eine weitere Anwendung von Rekursion findet sich in selbst-ähnlichen Kurven aus der Mathematik und der Natur. Die [[wpde> | Eine weitere Anwendung von Rekursion findet sich in selbst-ähnlichen Kurven aus der Mathematik und der Natur. Die [[wpde> | ||
Zeile 148: | Zeile 184: | ||
# Starte das Programm | # Starte das Programm | ||
turtle.reset() | turtle.reset() | ||
- | turtle.speed(90) | + | turtle.speed(5) |
kochkurve(300, | kochkurve(300, | ||
Zeile 218: | Zeile 254: | ||
[3, 2, 1] | [3, 2, 1] | ||
</ | </ | ||
+ | |||
+ | ===== Live Coding mit Fluxus ===== | ||
+ | |||
+ | Die Programmierumgebung [[live_coding# | ||
+ | |||
+ | < | ||
+ | <iframe width=" | ||
+ | </ | ||
+ | |||
===== Probleme rekursiver Algorithmen ===== | ===== Probleme rekursiver Algorithmen ===== | ||
Zeile 225: | Zeile 270: | ||
* Hoher Speicherplatzbedarf - Jeder Aufruf benötigt Speicherplatz für lokale Variablen | * Hoher Speicherplatzbedarf - Jeder Aufruf benötigt Speicherplatz für lokale Variablen | ||
* Unendliche Rekursion - Wenn man nicht aufpasst, enden die rekursiven niemals. | * Unendliche Rekursion - Wenn man nicht aufpasst, enden die rekursiven niemals. | ||
+ | ===== Rekursive Abkürzungen ===== | ||
+ | |||
+ | Auch in anderen Gebieten der Informatik hat sich die Rekursion etabliert. So gibt es [[wpde> | ||
+ | |||
+ | * PHP (PHP Hypertext Preprocessor) | ||
+ | * LAME (LAME Ain’t an Mp3 Encoder) | ||
+ | * WINE (WINE Is Not an Emulator) | ||
+ | * YAML (YAML Ain't Markup Language) | ||
+ | |||
===== Links ===== | ===== Links ===== | ||
- | * [[https:// | ||
* [[https:// | * [[https:// |
schule/rekursion.txt · Zuletzt geändert: 2024-01-20 09:39 von pintman