Š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?

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, if
paziņ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.

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?