Java rekursija: rekursīvas metodes (ar piemēriem)

Šajā apmācībā jūs uzzināsiet par Java rekursīvo funkciju, tās priekšrocībām un trūkumiem.

Java valodā metode, kas pati sevi sauc, ir pazīstama kā rekursīva. Šis process ir pazīstams kā rekursija.

Fiziskās pasaules piemērs būtu divu paralēlu spoguļu novietošana viens otram pretī. Jebkurš objekts starp tiem tiks atspoguļots rekursīvi.

Kā darbojas rekursija?

Java rekursijas darbs

Iepriekš minētajā piemērā mēs esam saucuši recurse()metodi no metodes iekšpuses main. (parastās metodes izsaukums). Recurse () metodes iekšienē mēs atkal saucam to pašu recurse metodi. Šis ir rekursīvs zvans.

Lai pārtrauktu rekursīvo zvanu, mums metodē ir jānodrošina daži nosacījumi. Pretējā gadījumā metodi sauks bezgalīgi.

Tādējādi mēs izmantojam paziņojumu if … else (vai līdzīgu pieeju), lai pārtrauktu rekursīvo zvanu metodes iekšienē.

Piemērs: skaitļa faktori, izmantojot rekursiju

 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); ) )

Izeja :

 4 faktoriāls = 24

Iepriekš minētajā piemērā mums ir metode ar nosaukumu factorial(). Tiek factorial()saukts no main()metodes. ar skaitļa mainīgo nodotu kā argumentu.

Šeit pamaniet paziņojumu,

 return n * factorial(n-1);

factorial()Metode zvana pati. Sākotnēji n vērtība ir 4 iekšpusē factorial(). Nākamā rekursīvā zvana laikā 3 tiek nodota factorial()metodei. Šis process turpinās, līdz n ir vienāds ar 0.

Kad n ir vienāds ar 0, ifpaziņojums atgriež viltus, tāpēc tiek atgriezts 1. Visbeidzot, uzkrātais rezultāts tiek nodots main()metodei.

Factorial programmas darbība

Zemāk redzamais attēls ļaus labāk izprast, kā faktoriālā programma tiek izpildīta, izmantojot rekursiju.

Faktorālā programma, izmantojot rekursiju

Rekursijas priekšrocības un trūkumi

Kad tiek veikts rekursīvs zvans, kaudzē tiek piešķirtas jaunas mainīgo lielumu glabāšanas vietas. Katram rekursīvajam zvanam atgriežoties, vecie mainīgie un parametri tiek noņemti no kaudzes. Tādējādi rekursija parasti izmanto vairāk atmiņas un parasti ir lēna.

No otras puses, rekursīvs risinājums ir daudz vienkāršāks, un tā rakstīšana, atkļūdošana un uzturēšana prasa mazāk laika.

Ieteicamā literatūra: Kādas ir rekursijas priekšrocības un trūkumi?

Interesanti raksti...