Wie Rekursion zu lösen

August 18

Wie Rekursion zu lösen

Rekursion ist ein leistungsfähiges Konzept im Bereich der Informatik, aber es kann für Anfänger schwierig zu begreifen sein. Rekursion ist eine Funktion oder Methode wiederholt aufrufen selbst in einem anderen Kontext, bis ein "base" Kontext erreicht und zurückgegeben wird. Mit anderen Worten, zur Lösung eines Problems, das Programm Recontexualizes es als etwas anderes Problem. Wenn Sie einen rekursiven Algorithmus implementieren, immer betrachten die einfachste Form des Problems und stellen in diesem vereinfachte Beispiel als eine "base Case", die alle anderen Versionen des Problems verweisen werden.

Anweisungen

1 Definieren Sie eine Funktion Header-Namen der Funktion und ihrer Eingänge. Eine Funktion, die eine besondere Fibonacci-Zahl findet könnte beispielsweise wie folgt aussehen:

FIB (Int n) {}

Hier berechnet die Funktion der "n-ten" Fibonacci-Zahl in der Folge.

2 Notieren Sie wie allgemein die Funktion aufgerufen wird. Zum Beispiel wenn Sie fib() aufrufen, wird eine ganze Zahl als Argument verwenden und erfassen die ganze Zahl, die er berechnet:

Int Ergebnis = fib(x);

3 Definieren Sie die "base Case" Problembeschreibung Rekursion. Möglicherweise gibt es mehrere Basis-Fälle. Da die Fibonacci-Folge zwei Zahlen erfordert, benötigen Sie zwei Basis-Fälle, seine Lösung zu implementieren.

Wenn (n == 0) return 0;Wenn (n == 1) return 1;

4 Definieren Sie den rekursive Schritt Ihres Problems Rekursion, als eine kleinere und einfachere Version des gleichen Problems, verweisen auf die Aufruf-Beispiel aus Schritt 2. In unserem Beispiel ist die Fibonacci-Folge eine mathematische Folge wo jede Zahl in der Zeile ist die Summe der beiden vorhergehenden Zahlen in der Reihenfolge. Der Algorithmus zum finden einer bestimmten Fibonacci-Zahl muss daher selbst zweimal, einmal für die bisherige Nummer und einmal für die Zahl vor der vorherigen Nummer aufrufen:

Int result1 = fib(n-1);Int result2 = fib(n-2);

Rückkehr result1 + result2;

5 Stellen Sie die Funktion zusammen, z.B.:

FIB (Int n) {}Wenn (n == 0) return 0; Minimallösung 1elseif (n == 1) return 1; Minimallösung 2

Else {//recursive SchrittInt result1 = fib(n-1);Int result2 = fib(n-2);

Rückkehr result1 + result2;}

}

Die Struktur der "base Case" und "rekursive Step" wird für alle rekursiven Funktionen identisch sein, obwohl es möglicherweise mehrere base Fällen und lange rekursiven Schritte.

Tipps & Warnungen

  • Damit Sie eine rekursive Lösung visualisieren können, gehen Sie durch des Programms Eingaben und gibt mithilfe einer Beispiel-Problem.
  • Egal wie Sie Ihre Funktion implementieren muss es immer seine Minimallösung während irgendwann während der Ausführung des Programms zurück. Andernfalls wird die Funktion nie aufhören sich selbst!