In einem Java-Programm , ist eine rekursive Methode eine Methode, die sich selbst aufruft . Rekursive Methoden können helfen Programmierer um einen Code Auszug zu entwerfen, um ein Problem zu vereinfachen. Rekursive Methoden oft auch zu sein scheinen prägnant, aber die Schaffung eines wirksamen rekursive Funktion kann sehr herausfordernd . Wie mit Schlaufen und andere Kontrollstrukturen in Java, haben die Entwickler an die Arbeit durch das, was passiert, wenn eine rekursive Funktion ausführt . Rekursive Methoden verursachen eine Reihe von gemeinsamen Problemen, wenn nicht richtig strukturiert. Problemlösung Failure
Programmierer verwenden rekursive Methoden, um bestimmte Probleme zu lösen . Natürlich eine rekursive Methode nicht bieten sehr nützliche Funktionen , wenn es nicht das Problem zu lösen für die es entworfen wurde . Dies geschieht manchmal , wenn der Programmierer hat sich entschieden, eine rekursive Funktion verwenden , wo es nicht angemessen ist. Im Allgemeinen ist eine rekursive Methode ideal für Situationen, in denen Sie benötigen, um ein Problem mit iterativen Schritten zu lösen. Jedes Mal, wenn die Methode ausgeführt , sollte sie das Problem vereinfacht und bringen Sie Ihr Programm einen Schritt näher an der Lösung ist es . Das Endergebnis der rekursiven Methode sollte die Lösung für Ihr Problem sein , zum Beispiel , ein Element in einer Datensammlung Objekt .
No End Fall
Damit eine rekursive Funktion , ohne das Programm in einer Endlosschleife zu arbeiten , muss es eine wohldefinierte Ende Fall . Dies bedeutet , dass es einen endgültigen Ausführung , anstatt die Ausführung der Methode endlos sein . Programmierer oft implementieren diese mit bedingten Anweisungen innerhalb der Methode , wie im folgenden Beispiel : public void doItRecursively (int num) {if ( zahl < 1) return; else { System.out.println (num) ; doItRecursively ( num /2) ;}}
Um diese Funktion aufrufen , kann ein Programm den folgenden Code verwenden: doItRecursively (10);
In diesem Fall wird die Funktion fünfmal ausführen wird , den Ausgang in der fünften Iteration . Jedes Mal, wenn das Verfahren führt sie näher an die End-Szenario , dem die bedingte if-Anweisung überprüft . Wenn die Methode nicht enthielt die bedingte Anweisung , es wäre endlos zu durchlaufen.
Keine Rekursion
Der Zähler Frage zu einer endlos Schleife iterativen Verfahren ist ein Verfahren das überhaupt nicht durchlaufen. Dies geschieht auch , wenn die bedingte Anweisung ist nicht richtig strukturiert. Zum Beispiel die " doItRecursively "-Methode , die folgende Anweisung geändert werden, wenn ein Problem verursachen würde gegeben : if ( num > 0) return;
Wenn die Methode nur mit positiven Integer-Werte als Parameter aufgerufen , ihre Inhalt wird nie durchlaufen als der Endpunkt erreicht wird sofort haben .
Falsche Methodenaufrufe
Wenn der Programmierer Aufruf einer rekursiven Methode keinen klaren Verständnis der seine Funktion , können sie es in einer Weise, die endlose Wiederholung oder keine Iteration führt zu verwenden. Zum Beispiel könnte die folgende veränderte bedingten Code innerhalb der Methode einfach falsch aufgerufen werden : if ( zahl < 0) return;
Wenn die Methode nur mit positiven Integer-Parameter -Werte genannt , es wird nie erreichen diesen Endpunkt und wird zu einer Endlosschleife führen . Rekursive Methoden kann viele der gleichen Fallen wie Schleifen , so dass sie der Praxis für die effektive Umsetzung erfordern .