Probleme der Rekursion in Java

September 9

In einem Java-Programm ist eine rekursive Methode eine Methode, die sich selbst aufruft. Rekursive Methoden können Programmierer entwerfen einen Code-Ausschnitt, ein Problem zu vereinfachen. Rekursive Methoden scheinen oft auch präzise zu sein, aber eine effektive rekursive Funktion zu erstellen, kann sehr anspruchsvoll sein. Wie bei Schleifen und anderen Steuerungsstrukturen in Java, müssen Entwickler arbeiten durch, was passieren wird, wenn eine rekursive Funktion ausführt. Rekursive Methoden dazu führen, dass eine Reihe von gemeinsamen Probleme, wenn nicht richtig strukturiert.

Problem lösen Fehler

Programmierer verwenden rekursive Methoden, um bestimmte Probleme zu lösen. Natürlich wird eine rekursive Methode nicht nützliche Funktionalität bereitstellen, wenn es das Problem nicht behoben wird, die, dem es entwickelt wurde. Dies geschieht manchmal, wenn der Programmierer entschieden hat, eine rekursive Funktion zu verwenden, wo ist es nicht angebracht. Im Allgemeinen ist eine rekursive Methode ideal für Situationen, in denen Sie ein Problem mit iterativen Schritten lösen müssen. Jedes Mal, wenn die Methode ausgeführt wird, sollten sie das Problem einfacher zu machen und Ihr Programm einen Schritt näher zu bringen, um es zu lösen. Das Endergebnis der rekursiven Methode sollte die Lösung für Ihr Problem, z. B. ein Element in einem Datenobjekt Sammlung suchen.

Kein Ende-Fall

Damit für eine rekursive Funktion arbeiten, ohne immer Ihr Programm in einer Endlosschleife stecken kann muss es einen genau definierten Ende-Fall haben. Das bedeutet, es müsse einen endgültigen Ausführung, anstatt die Methode endlos ausgeführt. Programmierer implementieren oft dadurch bedingte Anweisungen innerhalb der Methode, wie im folgenden Beispiel verwenden:public void DoItRecursively (Int Num) {}if(Num<1) zurück;Else {}System.out.println(Num);doItRecursively(num/2);}}

Um diese Funktion aufzurufen, kann ein Programm mit dem folgenden Code verwenden:doItRecursively(10);

In diesem Fall die Funktion ausführen wird fünf Mal den Ausgang in die fünfte Iteration. Jedes Mal, wenn die Methode ausgeführt wird, es kommt näher an die End-Szenario, die der bedingte if-Anweisung für überprüft. Wenn die Methode nicht die bedingte Anweisung enthielt, würde es endlos durchlaufen.

Keine Rekursion

Die Zähler-Ausgabe an eine Endlos Schleife iterative Methode ist eine Methode, die überhaupt nicht durchlaufen. Dies geschieht auch, wenn die bedingte Anweisung nicht korrekt aufgebaut ist. Der "DoItRecursively" Methode verändert beispielsweise folgende, wenn Anweisung dazu führen, ein Problem dass würde:if(NUM>0) zurück;

Wenn die Methode nur positive ganzzahlige Werte als Parameter aufgerufen wird, wird inhaltlich nie durchlaufen, wie der Endpunkt wird sofort erreicht worden sind.

Falsche Methodenaufrufe

Wenn der Programmierer eine rekursive Methode aufgerufen, eine klare Verständnis für seine Funktion nicht besitzt, können sie es auf eine Weise verwenden, die endlose Iteration oder keine Iteration verursacht. Beispielsweise könnte der folgende geänderte bedingte Code innerhalb der Methode leicht falsch genannt werden:if(Num<0) zurück;

Wenn die Methode nur positive ganzzahlige Parameterwerte aufgerufen wird, es werden niemals erreichen dieser Endpunkt und eine Endlosschleife verursachen. Rekursive Methoden können viele der gleichen Gefahren wie Schleifen, verursachen, so sie Praxis für eine wirksame Umsetzung erforderlich ist.