Rekursion in Java

Rekursion in Java
Rekursion in Java ist die Aufruf einer Methode nach der Methode innerhalb der Methode. Diese Aktion wiederholt sich, bis ein Zustand erfüllt ist. Die Methode sollte eine Methode in einer Klasse sein, außer einer in der Hauptklasse. Die Hauptklasse ist die Klasse, die die main () -Methode hat. Der Name der Java -Datei ist der der Hauptklasse. Eine statische Methode in der Hauptklasse kann weiterhin rekursiv gemacht werden, aber in diesem Artikel wird dies nicht behandelt. Dieser Artikel erklärt Rekursion in Java mit drei guten Beispielen.

Ganzzahlen von Null zählen

Betrachten Sie eine Java -Datei mit zwei Klassen: eine private Klasse wie folgt:

Klasse aclass
void mthd (int no)
System.aus.Druck (nein); System.aus.drucken(");
nein = nein + 1;
if (nein < 5)
mthd (no);

Die Methode, die sich selbst aufruft, ist mthd (). Es hat den Parameter "int no". Die Methode befindet sich in der Klasse, Aclass. Diese Methode zählt von 0 bis 4. Die erste Zeile in der Methode hat zwei Aussagen. Der erste druckt den Parameter, nein. Der zweite druckt einen Raum rechts von diesem gedruckten Parameter. Die nächste Zeile fügt 1 zu Nein hinzu. Die folgende Linie ist eine Anweisung für die If-Compound. Es hat den Zustand, der erfüllt sein muss. Der Zustand, der erfüllt ist. Wenn 5 nicht erreicht wurde, "mthd (nein); ruft sich ohne nein, das 1 hinzugefügt hat.

Die Hauptklasse für diese Methode kann sein,

öffentliche Klasse Theclass
public static void main (String [] args)
int num = 0;
ACLASS OBJ = New Aclass ();
obj.mthd (num);
System.aus.println ();

Die erste Aussage in der Main () -Methode deklariert die Ganzzahl, wobei Num Null zuweist. Damit eine Methode aufgerufen werden kann, sollte ein Objekt aus seiner Klasse instanziiert werden. Die nächste Aussage in der main () -Methode instanziiert ein Objekt, OBJ aus Aclass. Die Anweisung nach diesem Objekt verwendet dieses Objekt, um die Methode MTHD () aufzurufen und an das Argument, num, die 0 ist. Dies ist der Beginn der Anzahl. Die letzte Aussage in der Main () -Methode druckt eine neue Zeile, nachdem das gesamte Ergebnis gedruckt wurde. Die Ausgabe ist:

0 1 2 3 4

Die rekursive Methode MTHD () wird als erstes Mal aus der Main () -Methode bezeichnet. Danach ruft es sich immer wieder an, bis eine Bedingung erfüllt ist.

Diese Art der Zählung kann für jede Reichweite durchgeführt werden. Um es für einen beliebigen Bereich zu erreichen, muss die Startnummer des Bereichs Num zugewiesen werden. Anstelle von 5 für die If-Kondition in der Methode sollte die Zahl kurz nach dem Bereich eingegeben werden.

Hinzufügen eines Bereichs von nicht kontinuierlichen gegebenen Zahlen

Betrachten Sie die Zahlen:

10, 20, 30, 40, 50, 60

Die Summe der ersten 4 Zahlen beträgt 100. Das ist: 10 + 20 = 30; 30 + 30 = 60; und 60 + 40 = 100. Eine rekursive Methode kann diese Zahlen zu einer zunehmenden Summe hinzufügen, bis die Summe kleiner als oder gleich 100 ist. Um die ersten fünf Zahlen hinzuzufügen, kann die rekursive Methode die Zahlen zu einer zunehmenden Summe hinzufügen, bis die Summe kleiner als 150 ist.

Die Strategie besteht darin, alle diese Zahlen in einem Array in der Main () -Methode zu haben. Geben Sie dann das Array als Argument an die rekursive Methode weiter. Wenn die Hinzufügung der ersten vier Zahlen erforderlich ist, sollte die rekursive Methode, wenn die Summe 100 erreicht, aufhören, sich selbst anzurufen. Wenn die Hinzufügung der ersten fünf Zahlen erforderlich ist, sollte die rekursive Methode, wenn die Summe 150 erreicht, aufhören, sich selbst anzurufen. Wenn die Hinzufügung der ersten sechs Zahlen erforderlich ist, sollte die rekursive Methode, wenn die Summe 210 erreicht, aufhören, sich selbst anzurufen.

Die Klasse für diese rekursive Methode kann sein:

Klasse aclass
int sum = 0, i = 0;
void mthd (int [] arry)
sum = sum + arry [i];
i = i + 1;
if (sum < 100)
mthd (arry);

Dies ist zum Hinzufügen der ersten vier Zahlen. Die Klasse hat zwei Felder, die Summe und ich sind. Ich bin für das Ieserieren des Arrays, beginnend mit Index 0. Die erste Aussage in der rekursiven Methode, MTHD (), fügt der Summe, die ursprünglich Null ist, die nächste Zahl hinzu. Die nächste Aussage erhöht sich für den nächsten Array -Index des nächsten Anrufs um 1 um 1. Die Aussage danach ist die Verbindung, wenn sie sich befindet. Die Bedingung hier ist, dass die Summe nicht über 100 liegen sollte. Für jeden Aufruf, dass die Summe nicht bis zu 100 (oder höher) ist, wird die Methode erneut aufgerufen und das gleiche Array überholt. In dieser Situation befindet sich die Bedingung am Ende der Methode -Implementierung.

Die Main () -Klasse dafür kann sein:

öffentliche Klasse Theclass
public static void main (String [] args)
int [] arr = new int [] 10, 20, 30, 40, 50, 60;
ACLASS OBJ = New Aclass ();
obj.mthd (arr);
System.aus.println (obj.Summe);

Die erste Aussage in der Main () -Methode instanziiert das Array mit seinen Elementen. Die zweite Aussage instanziiert das Objekt für Aclas. Die Anweisung danach ruft die rekursive Methode auf und übergibt das Array als Argument. Dies ist der erste Anruf der rekursiven Methode. Danach ruft sich die Methode an, bis die erforderliche Summe erreicht ist. Die letzte Aussage druckt die endgültige Summe. Die Ausgabe für diesen Fall beträgt 100.

Fakultät

Das Fakultor von 0, geschrieben als 0!, ist 1. Die Faktorien von 5, 4, 3, 2, 1 sind wie folgt:

Faktorial von 5 = 5 x 4 x 3 x 2 x 1 x 0! = 120
Faktorial von 4 = 4 x 3 x 2 x 1 x 0! = 24
Faktorial von 3 = 3 x 2 x 1 x 0! = 6
Faktorial von 2 = 2 x 1 x 0! = 2
Faktororial von 1 = 1 x 0! = 1

Ein Programm kann so geschrieben werden, dass die rekursive Methode, wenn eine Nummer an eine rekursive Methode gesendet wird. Beachten Sie, dass die Faktoren bis auf 1 anstelle von 0 berechnet werden können und das Ergebnis immer noch das gleiche ist.

Die Klasse für die rekursive Methode kann sein:

Klasse aclass
int mthd (int no)
if (nein == 1)
Rückkehr 1;
anders
return (no * mthd (no-1));

Der gesamte Körper der Methode ist eine Verbindung, wenn sie sich befindet. Wenn die Nummer, deren Faktor benötigt wird, 1 ist, wird 1 zurückgegeben, da das Fakultät von 1 1 ist. Wenn die Zahl größer als 1 ist, muss die gesamte Multiplikation von der Zahl selbst abgeschlossen sein, um um 1 Einheit zu gehen.

Das Ergebnis wird erzielt, wenn die gesamte Multiplikation durchgeführt wurde. Der Rückgängerausdruck hier ist ein Methodenaufruf. Sein Argument ist das Produkt der Anzahl und der rekursiven Methode.

Angenommen, die Nummer, deren Faktor benötigt wird, ist 5, dann ist das Argument des ersten Rückrufs:

5 x mthd (4)

Dieser Ausdruck wird im Speicher reserviert, und der nächste Anruf wird sein

5 x 4 x mthd (3)

Dieser Ausdruck wird im Speicher reserviert, und der nächste Anruf wird sein

5 x 4 x 3 x mthd (2)

Dieser Ausdruck wird im Speicher reserviert, und der nächste Anruf wird sein

5 x 4 x 3 x 2 x mthd (1)

Jetzt gibt MTHD (1) 1 zurück,

5 x 4 x 3 x 2 x 1 = 120

Für den endgültigen Rückgabewert.

Die Hauptklasse dafür kann sein:

öffentliche Klasse Theclass
public static void main (String [] args)
ACLASS OBJ = New Aclass ();
int ret = obj.mthd (5);
System.aus.println (ret);

Mit einem Argument von 5 für den ersten Aufruf beträgt der endgültige zurückgegebene Wert 120.

Abschluss

Rekursion in Java ist die Aufruf einer Methode nach der Methode innerhalb der Methode. Diese Aktion wiederholt sich, bis ein Zustand erfüllt ist.