Rekurencja w Javie

Rekurencja w Javie
Rekurencja w Javie jest wywoływaniem metody metodą, od metody. To działanie powtarza się, aż do spełnienia stanu. Metoda powinna być metodą w klasie, innej niż jedna w klasie głównej. Główną klasą jest klasa, która ma metodę main (). Nazwa pliku Java to nazwa klasy głównej. Metodę statyczną w głównej klasie może być nadal rekurencyjna, ale nie zostanie to rozwiązane w tym artykule. Ten artykuł wyjaśnia rekurencję w Javie, z trzema dobrymi przykładami.

Liczenie liczb całkowitych od zera

Rozważ plik Java z dwiema klasami: klasa prywatna w następujący sposób:

klasa Aclass
void mthd (int no)
System.na zewnątrz.wydrukować (nie); System.na zewnątrz.wydrukować(");
nie = no + 1;
Jeśli nie < 5)
MTHD (no);

Metodą, którą należy nazywać, jest MTHD (). Ma parametr „int no”. Metoda jest w klasie, Aclass. Ta metoda liczy się od 0 do 4. Pierwsza linia w metodzie ma dwa stwierdzenia. Pierwszy drukuje parametr, nie. Drugi drukuje miejsce po prawej stronie tego wydrukowanego parametru. Następny wiersz dodaje 1 do nie. Poniższa linia jest stwierdzeniem IF-Compound. Ma warunek, który należy spełnić. Warunkiem, które należy spełnić, to wtedy, gdy nie osiągnie 5. Jeśli 5 nie zostało osiągnięte, „MTHD (nie);” Wzywa się z NO, które dodano do niego 1.

Główną klasą tej metody może być,

Klasa publiczna THEClass
public static void main (string [] args)
int num = 0;
Aclass obj = new aclass ();
obj.MTHD (num);
System.na zewnątrz.println ();

Pierwsze stwierdzenie w metodzie main () deklaruje liczbę całkowitą, NUM przypisując zero do niej. Aby wywołać metodę, obiekt powinien zostać utworzony z klasy. Następna instrukcja w metodzie main () tworzy obiekt, OBJ z Aclass. Oświadczenie po użyciu tego obiektu do wywołania metody, MTHD (), przekazywania jej argumentu, NUM, który wynosi 0. To jest początek hrabiego. Ostatnie stwierdzenie w metodzie main () drukuje nową linię, po wydrukowaniu wyniku. Wyjście to:

0 1 2 3 4

Metoda rekurencyjna, MTHD (), nazywa się po raz pierwszy z metody Main (). Potem wciąż się wzywa, aż do spełnienia stanu.

Tego rodzaju liczenie można wykonać dla dowolnego zakresu. Aby to osiągnąć dla dowolnego zakresu, numer początkowy zakresu należy przypisać do NUM. Zamiast 5 dla kresu IF w metodzie, liczba tuż po zasięgu należy wpisać.

Dodanie szeregu nieograniczających liczb

Rozważ liczby:

10, 20, 30, 40, 50, 60

Suma pierwszych 4 liczb to 100. To znaczy: 10 + 20 = 30; 30 + 30 = 60; i 60 + 40 = 100. Metodą rekurencyjną może dodawać te liczby do rosnącej sumy, aż suma będzie mniejsza lub równa 100. Aby dodać pierwsze pięć liczb, metodą rekurencyjną może dodawać liczby do rosnącej sumę, aż suma będzie mniejsza lub równa 150.

Strategia polega na posiadaniu wszystkich tych liczb w tablicy w metodzie Main (). Następnie przekazaj tablicę jako argument do metody rekurencyjnej. Jeśli wymagane jest dodanie pierwszych czterech liczb, to gdy suma osiągnie 100, metoda rekurencyjna powinna przestać się wzywać. Jeśli wymagane jest dodanie pierwszych pięciu liczb, to gdy suma osiągnie 150, metoda rekurencyjna powinna przestać się wzywać. Jeśli wymagane jest dodanie pierwszych sześciu liczb, to gdy suma osiągnie 210, metoda rekurencyjna powinna przestać się wzywać.

Klasa dla tej metody rekurencyjnej może być:

klasa Aclass
int sum = 0, i = 0;
void mthd (int [] arry)
sum = sum + arry [i];
i = i + 1;
if (suma < 100)
MTHD (Arry);

To jest do dodania pierwszych czterech liczb. Klasa ma dwa pola, które są sumą i ja. JEST ITERYKOWANE ZA TREAY, Począwszy od indeksu 0. Pierwsze stwierdzenie w metodzie rekurencyjnej, MTHD (), dodaje następną liczbę do sumy, która początkowo jest zerowa. Następne stwierdzenie zwiększa I o 1, dla następnego indeksu tablicy następnego połączenia. Oświadczenie to jest złożone if-hodowlanie. Warunkiem jest to, że suma nie powinna być powyżej 100. Tak więc dla każdego wywołania, że ​​suma nie jest do 100 (lub więcej), metoda jest wywoływana ponownie, przekazując tę ​​samą tablicę. W tej sytuacji warunek znajduje się na końcu implementacji metody.

Klasa główna () dla tego może być:

Klasa publiczna 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.na zewnątrz.println (obj.suma);

Pierwsze stwierdzenie w metodzie main () tworzy tablicę, z jej elementami. Drugie stwierdzenie tworzy obiekt dla Aclass. Oświadczenie po, wywołuje metodę rekurencyjną, przekazując tablicę jako argument. To pierwsze wywołanie metody rekurencyjnej. Następnie metoda będzie się nazywać do momentu osiągnięcia wymaganej sumy. Ostatnie oświadczenie drukuje ostateczną sumę. Dane wyjściowe w tej sprawie wynosi 100.

Silnia

Czynnik 0, napisany jako 0!, jest 1. Skutki 5, 4, 3, 2, 1 są następujące:

Czynnik 5 = 5 x 4 x 3 x 2 x 1 x 0! = 120
Czynnik 4 = 4 x 3 x 2 x 1 x 0! = 24
Czynnik 3 = 3 x 2 x 1 x 0! = 6
Czynnik 2 = 2 x 1 x 0! = 2
Czynnik 1 = 1 x 0! = 1

Program można napisać, aby po wysłaniu liczby do metody rekurencyjnej metoda rekurencyjna w końcu zwróci wynikowy czynnik. Zauważ, że czynnik można obliczyć do 1, zamiast 0, a wynik będzie nadal taki sam.

Klasa dla metody rekurencyjnej może być:

klasa Aclass
int Mthd (int no)
if (no == 1)
zwrot 1;
w przeciwnym razie
return (no * mthd (no-1));

Cały korpus metody jest złożonym podnośnikiem. Jeśli liczba, której czynnik jest potrzebny, wynosi 1, to, co zostanie zwrócone, wyniesie 1, ponieważ czynnik 1 to 1. Jeśli liczba jest większa niż 1, wówczas całe mnożenie będzie musiało zostać wykonane, zaczynając od samej liczby, spadając o 1 jednostkę.

Wynik jest uzyskiwany, gdy wykonano całe mnożenie. Wyrażenie zwrotne tutaj jest wywołaniem metody. Jego argument jest produktem liczby i metody rekurencyjnej.

Załóżmy, że liczba, której czynnik jest potrzebny, wynosi 5, wówczas argument pierwszego połączenia zwrotnego będzie:

5 x MTHD (4)

To wyrażenie będzie zarezerwowane w pamięci, a następne połączenie będzie

5 x 4 x MTHD (3)

To wyrażenie będzie zarezerwowane w pamięci, a następne połączenie będzie

5 x 4 x 3 x mthd (2)

To wyrażenie będzie zarezerwowane w pamięci, a następne połączenie będzie

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

Teraz MTHD (1) zwraca 1, ze względu na stwierdzenie części IF: „If (no == 1) zwróć 1;”, w wyniku czego powstaje,

5 x 4 x 3 x 2 x 1 = 120

dla ostatecznej wartości zwracania.

Główną klasą, może być:

Klasa publiczna THEClass
public static void main (string [] args)
Aclass obj = new aclass ();
int ret = obj.MTHD (5);
System.na zewnątrz.println (ret);

Z argumentem 5 dla pierwszego wywołania, w metodzie Main () ostateczna zwrócona wartość wynosi 120.

Wniosek

Rekurencja w Javie jest wywoływaniem metody metodą, od metody. To działanie powtarza się, aż do spełnienia stanu.