Rekursive Programmierung beherrschen

Ich habe Probleme beim denken/lösen das problem in Bezug auf die Rekursion. Ich wirklich zu schätzen, das Konzept und ich kann Sie verstehen, wie die Erstellung von Basis-Gehäuse, Ausgang-Gehäuse & die rekursiven Aufrufe etc. Ich kann bei der Lösung einfacher Probleme wie das schreiben einer Fakultät oder Summierung der zahlen in einem array. Das ist, wo mein denken aufhört. Konnte ich nicht wirklich anwenden, die Konzepte oder Lösungen, wenn das problem kompliziert. Zum Beispiel, Turm von Hanoi, kann ich zwar verstehen, das problem und die Lösung habe ich, auf meinem eigenen kann nicht mit einer Lösung. Es gilt auch für andere algorithmen wie quick sort/binary tree traversal als gut. Also meine Frage ist

  1. Was ist der beste Weg, um es zu meistern?
  2. Kann jeder jeden schlagen eine Liste von Fragen oder Probleme, die ich benutzen kann als übung der Praxis?
  3. Wird das lernen funktionale Sprache, die mir helfen, mit meinem Verständnis?

Bitte um Rat.

Kommentar zu dem Problem - Öffnen
Rekursion ist hart, nur weil wir nicht gelehrt zu denken rekursiv früh in unserem Leben. Ich fand nützlich, wenn Sie angreifen, ein Rekursives problem, Erstens denke in einem base case. Wenn ich erfolgreich identifiziert ein base-case -, Gebäude-oben ist es eher einfacher. Das funktioniert für mich. Kommentarautor: Paulo Bu
Was ich fand, half mir beim lernen Rekursion war dieser Gedanke: "Rekursion ist der Weg der trivialisierung, d.h. es ist in der Regel in form Ihrer Lösung = triviale Schritt + etwas einfacher Lösung" Zum Beispiel, für das Beispiel hanoi, löste ich es mit der Argumentation: das problem ist gelöst, durch die Realisierung, dass es nur impliziert durch a) verschieben das größte Stück (allein) von Punkt 1 zu Punkt 3 (trivial-Schritt) b) verschieben n-1) - Turm von Punkt 2 zu Punkt 3 (etwas einfachere Lösung) die etwas einfachere Lösung gefunden werden kann durch wiederholen der Schritte a) und b), nur für den Ziel-Punkt 2, und so weiter... Kommentarautor: Davide
Rekursion ist alles über die Abstraktion. Sie auszudrücken versuchen die Lösung zu einem problem in der gleichen Form wie das ursprüngliche problem, aber mit unterschiedlichen Parametern. Zum Beispiel 10! = 1 * 10! = 10 * 9!, also beides, problem und Lösung sind von der form a * b!. Die meisten Leute finden, Abstraktionen schwierig. Aber tatsächlich, es ist alles zu versuchen, die ähnlichkeiten finden sich in unterschiedlichen Situationen. Sie können sogar Praxis, dass Sie in Ihrem täglichen Leben (versuchen zu sehen, die ähnlichkeiten in zwei verschiedene Konzepte). Kommentarautor: Vincent van der Weele
In der Tat Rekursion (und Beweise durch Induktion) ist etwas, das in der Regel nicht verstanden werden, sofort, obwohl es in der Regel nicht sehr Komplex. Ein guter Weg ist in der Tat das Studium der genannten Probleme in die nachfolgenden Antworten und nur versuchen, Probleme zu formulieren und Strukturen rekursiv, auch wenn es scheint völlig künstlich. Jedoch möchte ich hinzufügen das minimax-Algorithmus, die verwendet werden können, spielen verschiedene Gesellschaftsspiele. Es kann auch als navigation ein Suchbaum. Kommentarautor: Codor
Übungen: auflisten aller Permutationen einer Zeichenkette 'abcdefgh'. Oder alle Kombinationen von 5 Buchstaben aus dieser Menge. Hinweise: angenommen Sie haben eine Funktion, die listet alle Permutationen von 'abcdefg'; nehme an, Sie haben eine Funktion, die zählt alle Kombinationen von 4 Buchstaben von 'abcdefgh', oder übernehmen Sie eine Funktion, die zählt alle Kombinationen von 5 Buchstaben unter 'abcdefg'. Kommentarautor: Yves Daoust

InformationsquelleAutor der Frage Hunter | 2014-03-28

Schreibe einen Kommentar