schule:rekursion
Unterschiede
Hier werden die Unterschiede zwischen zwei Versionen angezeigt.
Beide Seiten der vorigen RevisionVorhergehende ÜberarbeitungNächste Überarbeitung | Vorhergehende ÜberarbeitungNächste ÜberarbeitungBeide Seiten der Revision | ||
schule:rekursion [2017-02-02 16:10] – [Übung Kochkurve] marco.bakera | schule:rekursion [2019-12-21 14:20] – [Übung Streckenalgorithmus] owncloud link entfernt. marco.bakera | ||
---|---|---|---|
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) | ||
</ | </ | ||
Zeile 112: | Zeile 112: | ||
{{: | {{: | ||
- | 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 ===== | ||
Zeile 155: | Zeile 185: | ||
</ | </ | ||
- | |||
- | ===== Live Coding mit Fluxus ===== | ||
- | |||
- | Die Programmierumgebung [[live_coding# | ||
- | |||
===== Übung Grundrechenarten ===== | ===== Übung Grundrechenarten ===== | ||
Zeile 225: | Zeile 250: | ||
[3, 2, 1] | [3, 2, 1] | ||
</ | </ | ||
+ | |||
+ | ===== Live Coding mit Fluxus ===== | ||
+ | |||
+ | Die Programmierumgebung [[live_coding# | ||
+ | |||
+ | < | ||
+ | <iframe width=" | ||
+ | </ | ||
+ | |||
===== Probleme rekursiver Algorithmen ===== | ===== Probleme rekursiver Algorithmen ===== | ||
Zeile 232: | Zeile 266: | ||
* 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