Narses hat folgendes geschrieben: |
...Ich habe schonmal eine interative Quicksort-Implementation gesehen (schauer), ja das gibt es! |
Stimmt. Die sind ja auch schneller! Beweis siehe Anhang.
GigaNeko, Dein Lehrer ist in meinen Augen eine Pfeife! Wie willst Du den Sinn von Rekursivität begreifen, wenn Ihr solche dämlichen Aufgaben à la "Schreibe ein Zählprogramm, aber rekursiv!" bekommt. Diesbezügliche Hilferufe sind in letzter Zeit häufiger aufgetaucht. Das Quicksort-Verfahren ist zwar rekusiv definiert, das heisst aber noch lange nicht, das man es auch rekursiv implementieren muss: Denn dann müsste die Addition auch rekursiv implementiert sein ('Der Nachfolger einer natürlichen Zahl ist eine natürliche Zahl')...
Rekursive Lösungen sind genau dann (als erster Ansatz) die richtige Wahl, wenn es um die Lösung eines Problemes geht, dessen Definition rekursiv ist. Z.B.: Ackermannsche Funktion, und m.E. Fibbionacci und Fakultät. Die beiden Letzten sind allerdings so einfach iterativ darzustellen (mit beträchtlichen Performancsprüngen), das eine rekursive Implementierung keinen Sinn ergibt. Als erster Lösungsansatz reichen sie jedoch allemal. I.a. sind rekursive Algorithmen auch leichter zu begreifen, weil sie eben der mathematischen Definition, die i.a. rekursiv ist, am nächsten kommen.
- N! = Wenn n=1 dann 1 sonst N* (N-1)!
Ich würde das Problem der "Türme von Hanoi" als Aufgabe zum Begreifen der Rekursivität nehmen. Hier ist die rekursive Lösung so elegant, das der Charme der Rekursivität vermittelt werden kann. Vor allen Dingen sind die Türme ein wunderbarer Einstieg, weil das Problem kaum lösbar erscheint, mit dem rekursiven 3-Zeiler jedoch auf einmal popeleinfach ist!
Oder z.B. Hilbertkurven. Hier wird Rekusivität auch visuell dargestellt.
Aber, na ja. Dann eben Sortieralgorithmen. HeapSort wäre neben Quicksort imho eine Möglichkeit für einen (halbwegs sinnvollen) rekursiven Sortieralgo. Aber, Bubblesort auf 'rekursivisch' möchte ich sehen. Das wäre wirklich eine schöne Verarsche für den Lehrer. Bitte die Lösung posten!
Na denn, dann. Bis dann, denn.