Unterrichtsrekursion


7

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?


Gehen Sie in Richtung Programmierung oder CS (wie in der Entwicklung von Modellen und Algorithmen)?
Raphael

Es ist keine Programmierung.
Amen

4
Der beste Weg, um Rekursion zu unterrichten, besteht darin, jemand anderem beizubringen, die Klasse für Sie zu unterrichten. * rimshot *
David Richerby

Unterrichten Sie Rekursion oder unterrichten Sie Induktion? Sie sind nicht die gleiche Vorlesung.
DanielV

1
Die Türme von Hanoi könnten ein gutes Beispiel sein.
Raphael

Antworten:


7

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:

Rekursion ist eine besonders starke Art der Reduktion, die lose wie folgt beschrieben werden kann:

  • Wenn die angegebene Instanz des Problems klein oder einfach genug ist, lösen Sie sie einfach.
  • Andernfalls reduzieren Sie das Problem auf eine oder mehrere einfachere Instanzen desselben Problems.

Wenn die Selbstreferenz verwirrend ist, ist es hilfreich, sich vorzustellen, dass jemand anderes die einfacheren Probleme lösen wird, so wie Sie es für andere Arten von Reduzierungen annehmen würden. Ich nenne das gerne jemand anderen die Rekursionsfee. Ihre einzige Aufgabe besteht darin, das ursprüngliche Problem zu vereinfachen oder es direkt zu lösen, wenn eine Vereinfachung entweder unnötig oder unmöglich ist. die Rekursion Fee auf magische Weise kümmert sich um alle die einfacheren Subprobleme für Sie, mit Methoden , die Out nichts an! So Hintern sind 1 . Mathematisch anspruchsvolle Leser erkennen die Rekursionsfee möglicherweise an ihrem formelleren Namen, der Induktionshypothese.

1 : Als ich Student war, schrieb ich Rekursion anstelle der Rekursionsfee „Elfen“ zu und bezog mich dabei auf die Geschichte der Brüder Grimm über einen alten Schuhmacher, der seine Arbeit unvollendet lässt, wenn er ins Bett geht, um sie beim Aufwachen zu entdecken Elfen („Wichtelmänner“) haben über Nacht alles erledigt. Jemand, der entheogener ist als ich, könnte sie als Terence McKennas „sich selbst transformierende Maschinenelfen“ erkennen.

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:

Der Trick, um dieses Rätsel zu lösen, besteht darin, rekursiv zu denken. Anstatt zu versuchen, das gesamte Rätsel auf einmal zu lösen, konzentrieren wir uns darauf, nur die größte Scheibe zu bewegen. [...] Und nachdem wir die te Platte verschoben haben, müssen wir diese Platten wieder darauf legen. Jetzt müssen wir nur noch herausfinden, wie ...nn1

HALT!! Das ist es! Wir sind fertig! Wir haben das Problem des Disk-Turms von Hanoi erfolgreich auf zwei Instanzen des Problems des ( ) -Disk-Turms von Hanoi reduziert, die wir gerne an die Rekursionsfee weitergeben können (oder, um die ursprüngliche Geschichte weiterzuführen, an die Jugendmönche im Tempel).nn1


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 .


3

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.


3

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:

So lösen Sie ein Problem: (1) Behandeln Sie die Basisfälle, bei denen keine Rekursion angewendet wird, und (2) lösen Sie alles andere, indem Sie kleinere Probleme lösen und die kleineren Lösungen in geeigneter Weise zu Ihrer Lösung für das Original kombinieren Problem.

Dies funktioniert gut bei numerischen Problemen wie dem Rechnen n! (wo das kleinere Problem das Rechnen betrifft (n1)!) 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.


2

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.


PS Das Zwiebel-Gimmick funktioniert auch mit Artischocken, ist aber möglicherweise nicht so häufig wie ein Lebensmittel.
Babou

In technischer Hinsicht haben Sie induktive Definitionen und rekursive Funktionen kombiniert? Das ist eine sehr natürliche (man könnte sagen obligatorische) Kombination.
Raphael

@babou Wenn Sie mehr darüber nachdenken, ist die Artischocke nicht so praktisch ... es sei denn, Sie unterrichten gleichzeitig Nicht-Determinismus.
Babou
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.