Ich bin Lehrerassistent an meiner Universität und mein nächstes Thema ist Rekursion. Wie kann man Rekursion am besten unterrichten, damit der Schüler das Konzept leicht verstehen und rekursiv denken kann?
Ich habe darüber nachgedacht, die Stapelstruktur zu erklären, um die Rekursion zu lehren, aber ich mache mir Sorgen, dass sie den Prozess nicht weiter verfolgen können. irgendeinen Hinweis?
7
Antworten:
Meine Lieblingsmethode, um Rekursion zu unterrichten, ist die Bezugnahme auf die Rekursionsfee.
Ich bin sicher, wir alle kennen die Idee, dass Geschichten eine sehr effektive Möglichkeit sein können, Ideen zu vermitteln. Menschen scheinen gebaut zu sein, um Geschichten zu hören und sich daran zu erinnern. Die Rekursionsfee ist eine Erklärung von Jeff Erickson, die sich gut für diesen Ansatz eignet.
Wie Jeff E. schreibt:
Ich empfehle, seine gesamten Vorlesungsunterlagen zur Rekursion zu lesen . Sie sind eine Sache von Schönheit und geben Ihnen viele ausgezeichnete Ideen, wie man Rekursion lehrt.
Schauen Sie sich zum Beispiel seine Erklärung der Türme von Hanoi an, in der er zeigt, wie das Problem durch Rekursion gelöst werden kann. Mein Lieblingsabschnitt:
Verweise auf die Rekursionsfee: Ein Youtube-Video („Rekursion ist, wenn Sie etwas lösen müssen, rufen Sie sich selbst an, anstatt andere!“ „Wenn ich also ein Problem habe, bitte ich mich, es zu lösen?“ „Um es zu verstehen Rekursion muss man Rekursion verstehen "). Divide-and-Conquer ist eine Armee von Rekursionsfeen .
quelle
Ich finde, dass der beste Weg, um eine nicht triviale Rekursion zu erklären, darin besteht, mit mathematischen Funktionen zu beginnen, die für einige der Schüler "bequemer" sind. Beispielsweise sind Fibonacci-Zahlen ein hervorragendes Beispiel, da sie zwei rekursive Aufrufe verwenden.
Ein weiteres Beispiel (das als einfache Übung angegeben werden kann) ist die Berechnung von.n !
Dann sind einige weitere "algorithmische" Beispiele für komplexere Datenstrukturen angebracht. Die natürlichsten Beispiele hierfür sind Baumdurchquerungen (Vorbestellung, In-Reihenfolge, Nachbestellung). Ich denke, dass die Schüler nach diesen Beispielen den Dreh raus bekommen. Von da an ist es hauptsächlich Übung.
Ich würde die Stapelstruktur für später speichern, da sie für die Art und Weise, wie die Rekursion tatsächlich in Computern implementiert wird, relevanter ist, was weniger mit dem tatsächlichen Konzept der Rekursion zu tun hat.
quelle
Shaulls Vorschläge sind gut. Es ist wichtig, sich daran zu erinnern und die Schüler ständig daran zu erinnern, dass die zugrunde liegende Idee ist:
Dies funktioniert gut bei numerischen Problemen wie dem Rechnenn ! (wo das kleinere Problem das Rechnen betrifft ( n - 1 ) ! ) oder Computer xn Verwenden des wiederholten Quadrierens (wobei das kleinere Problem im Grunde das Rechnen ist xn / 2 ).
Rekursion und Induktion gehen Hand in Hand, insbesondere wenn die Richtigkeit eines rekursiven Algorithmus nachgewiesen wird oder wenn Zeitschätzungen für einen Algorithmus erhalten werden.
Rekursion ist natürlich eine natürliche Technik für Bäume, aber vergessen Sie auch nicht Listen, indem Sie beispielsweise eine Liste von Zahlen rekursiv summieren oder eine Liste umkehren. Natürlich ist Mergesort hier ein natürlicher Kandidat, und es lohnt sich, alles rekursiv durchzuführen, einschließlich einer rekursiven Implementierung der Aufteilung einer Liste in zwei nahezu gleiche Teile und der rekursiven Implementierung des Merge-Teils.
Ich möchte darauf hinweisen, dass Rekursion nicht nur ein leistungsfähiges Entwurfswerkzeug ist, sondern auch eine Untersuchung wert ist, da es Probleme gibt, bei denen es äußerst schwierig sein kann, eine nicht rekursive Lösung zu finden. Ein gutes Beispiel dafür sind die Türme von Hanoi: Die rekursive Lösung ist einfach und mehr oder weniger transparent, während eine nicht rekursive Lösung wirklich schwer zu erklären und wahrscheinlich noch schwieriger zu erfinden ist.
quelle
Wenn Sie Rekursion unterrichten, möchten Sie möglicherweise mit Funktionen oder Datenstrukturen beginnen .
Wie ich mich an meine Unterrichtstage erinnere, begann ich mit einer Kochstruktur: der Zwiebel. Also erklärte ich, dass eine Zwiebel entweder eine einsame Schale (oder ein Kern) oder eine Oinion mit einer Schale ist. Dann wechselte ich zu anderen Strukturen wie Schnüren oder Bäumen.
Dann musste ich Programme für diese Strukturen schreiben. Und sie nannten sich natürlich rekursiv und folgten der Definition der Struktur. Das Basisfallkonzept erscheint auch natürlicher, und der Ansatz vermeidet zumindest zunächst, das Konzept einfacherer Instanzen des Problems zu haben.
Das Anwenden auf andere Daten wie numerische Daten ist dann natürlicher.
quelle