Java rekursioon: rekursiivsed meetodid (koos näidetega)

Selles õpetuses saate teada Java rekursiivsest funktsioonist, selle eelistest ja puudustest.

Javas tuntakse ennast kutsuvat meetodit rekursiivse meetodina. Ja seda protsessi nimetatakse rekursiooniks.

Füüsilise maailma näide oleks asetada kaks paralleelset peeglit üksteise poole. Kõik nende vahel olevad objektid kajastuksid rekursiivselt.

Kuidas rekursioon töötab?

Java rekursiooni töötamine

Ülaltoodud näites oleme recurse()meetodit nimetanud meetodi seestpoolt main. (tavaline meetodkõne). Ja meetodis recurse () kutsume taas sama recurse meetodit. See on rekursiivne kõne.

Rekursiivse kõne peatamiseks peame meetodi sees esitama mõned tingimused. Vastasel juhul nimetatakse meetodit lõpmatuks.

Seega kasutame meetodi sees rekursiivse kõne lõpetamiseks lauset if… else (või sarnast lähenemist).

Näide: rekursiooni kasutava arvu faktoriaal

 class Factorial ( static int factorial( int n ) ( if (n != 0) // termination condition return n * factorial(n-1); // recursive call else return 1; ) public static void main(String() args) ( int number = 4, result; result = factorial(number); System.out.println(number + " factorial = " + result); ) )

Väljund :

 4 faktoriaal = 24

Ülaltoodud näites on meil meetod nimega factorial(). Seda factorial()nimetatakse main()meetodilt. argumendina edastatud numbrimuutujaga.

Pange tähele avaldust,

 return n * factorial(n-1);

factorial()Meetod helistab ise. Esialgu on n väärtus 4 sees factorial(). Järgmise rekursiivse kõne ajal edastatakse factorial()meetodile 3. See protsess kestab seni, kuni n on võrdne 0-ga.

Kui n on võrdne 0-ga, iftagastab lause vale, seega tagastatakse 1. Lõpuks edastatakse akumuleeritud tulemus main()meetodile.

Faktoriaalprogrammi töö

Allolev pilt annab teile parema ülevaate sellest, kuidas rekkalsiooni abil faktoriaalprogramm täidetakse.

Faktooniprogramm rekursiooni abil

Rekursiooni eelised ja puudused

Rekursiivse kõne tegemisel eraldatakse virnale muutujate uued salvestuskohad. Kui iga rekursiivne kõne naaseb, eemaldatakse virnast vanad muutujad ja parameetrid. Seega kulutab rekursioon tavaliselt rohkem mälu ja on tavaliselt aeglane.

Teisalt on rekursiivne lahendus palju lihtsam ja selle kirjutamine, silumine ja hooldamine võtab vähem aega.

Soovitatav lugemine: millised on rekursiooni eelised ja puudused?

Huvitavad Artiklid...