Rekursion ist ein leistungsfähiges Konzept auf dem Gebiet der Informatik, aber es kann schwierig sein, für Neulinge zu fassen. Rekursion wird eine Funktion oder Methode wiederholt Aufruf selbst in einem anderen Kontext , bis ein "Basis"- Kontext erreicht wird und zurückgegeben. In anderen Worten, um ein Problem zu lösen , recontexualizes das Programm es als etwas anderes Problem . Bei der Implementierung eines rekursiven Algorithmus , immer die einfachste Form des Problems und stellen diese vereinfachtes Beispiel als " base case ", die anderen Versionen des Problems verweisen. Anleitung
1
Definieren einer Funktion header - der Name der Funktion und seine Eingänge . Zum Beispiel könnte eine Funktion , die eine bestimmte Fibonacci-Zahl findet wie folgt aussehen:
fib ( int n ) {}
Hier berechnet die Funktion die " n-te " Fibonacci-Zahl in der Sequenz .
2
Notieren Sie, wie die Funktion generisch aufgerufen. Zum Beispiel, wenn Sie fib () aufrufen , werden Sie eine ganze Zahl als Argument verwenden und notieren Sie die Zahl , dass es berechnet :
int result = fib (x);
3
Definieren Sie den "base case" Ihrer Rekursion Problem. Es können mehrere Basis Fällen. Wie die Fibonacci-Folge sind zwei Zahlen , benötigen Sie zwei Fällen Basis seiner Lösung zu implementieren
if ( n == 0) return 0; . If ( n == 1) return 1;
< br > 4
definieren die rekursive Schritt Ihrer Rekursion Problem als kleinere, einfachere Version des gleichen Problems verweisen die Anrufung Beispiel aus Schritt 2 . In unserem Beispiel ist die Fibonacci-Folge eine mathematische Folge , wobei jede Zahl in der Zeile ist die Summe der beiden vorangegangenen Zahlen in der Sequenz. Der Algorithmus , um eine bestimmte Fibonacci-Zahl zu finden ist daher berufen sich zweimal, einmal für die bisherige Anzahl und einmal für die Zahl vor dem früheren Nummer :
int result1 = fib ( n -1); int result2 = fib ( n -2);
Rückkehr result1 + result2 ;
5
Setzen Sie die Funktion zusammen , z. B.:
fib ( int n ) {if ( n == 0) return 0; //Basisfall 1else if ( n == 1) return 1; //base case 2
else {//recursive stepint result1 = fib ( n -1); int result2 = fib (n-2 );
Rückkehr result1 + result2 ;} }
die Struktur der "base case" und " rekursive Schritt " werden die gleichen sein für alle rekursiven Funktionen , obwohl es mehrere Basis Fälle und lange rekursiv Schritte sein können.