<< Verzeichnisse und Dateien | Inhalt | kleine Übersicht >> |
Beschreibung | Beispiele |
Eine Rekursion nennt man folgende Programmiertechnik: Eine Funktion ruft sich selbst auf! Die Idee dabei ist: Man führt ein Problem, das aus lauter Teilproblemen besteht, auf ein Problem von gleicher Art - aber geringeren Umfangs - zurück. Hä?
Also ein einfaches Beispiel:
Wir möchten die Fakultät einer Zahl n berechnen. Diese ist definiert als n!=n*(n-1)* ... * 2*1.
Gut man könnte das jetzt einfach mit einer for-Schleife regeln. Aber wir möchten ja testen was es mit dieser Rekursion auf sich hat:
Unser Problem ist, dass wir n-1 Multiplikationen durchführen müssen. Man könnte dieses Problem so zerlegen: n!=n*(n-1)!. Das bedeutet wir berechnen jetzt n! aus n und (n-1)!. Damit haben wir unser Problem vereinfacht und wir müssen nicht mehr n! ausrechnen, sondern nur noch (n-1)!. Und das soll einfacher sein - na klar. Man kann das ja weitermachen, bis man bei 1 ist. Und davon wissen wir, dass die Fakultät 1 ist.
Also Fakultät haben wir schon. n! wird zerlegt in n*(n-1)!, solange bis man bei 1 angelangt ist:
Durchlauf durch eine Verzeichnisstruktur ist ein typisches Problem, das man mit Hilfe von einer Rekursion lösen kann. Was ist unser Problem: Wir möchten alle Files, Unterverzeichnisse und deren Files und Unterverzeichnisse und deren ... ausgeben.
Die Lösung - nur formal - die richtige gibt's in den Übungen:
Fibonacci-Zahlen lassen sich ebenfalls rekursiv berechnen. Also Fibonacci-Zahlen sind: 1 1 2 3 5 8 13 21 .... Entstehung dieser Zahlen: Gestartet wird mit 1 und 1. Die nächste Fibonacci-Zahl ist 3 - das ist die Summe der beiden vorangegangenen Zahlen. Und so geht es auch weiter. 2+3=5, 3+5=8. Will man nun eine beliebige Fibonacci-Zahl bestimmen kann man dies folgendermaßen tun:
Beschreibung | Beispiele |
<< Verzeichnisse und Dateien | Inhalt | kleine Übersicht >> |
© 2001-2003 Perl, Lehrstuhl Mathe II, Uni Bayreuth |