Šioje pamokoje sužinosite apie „Java“ rekursinę funkciją, jos privalumus ir trūkumus.
„Java“ sistemoje save vadinantis metodas yra žinomas kaip rekursinis. Šis procesas yra žinomas kaip rekursija.
Fizinio pasaulio pavyzdys būtų dviejų lygiagrečių veidrodžių pastatymas vienas priešais kitą. Bet koks tarp jų esantis objektas būtų atspindėtas rekursiškai.
Kaip veikia rekursija?

Ankstesniame pavyzdyje mes vadinome recurse()
metodą iš metodo vidaus main
. (įprasto metodo iškvietimas). Recurse () metodo viduje mes vėl vadiname tą patį recurse metodą. Tai yra rekursinis skambutis.
Norėdami sustabdyti rekursinį skambutį, metodo viduje turime pateikti tam tikras sąlygas. Priešingu atveju metodas bus vadinamas be galo.
Taigi mes naudojame teiginį if… else (ar panašų metodą), kad užbaigtume rekursinį skambutį metodo viduje.
Pavyzdys: Skaičiaus faktorius naudojant rekursiją
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); ) )
Išvestis :
4 faktorialas = 24
Ankstesniame pavyzdyje mes turime metodą, pavadintą factorial()
. Tai factorial()
vadinama iš main()
metodo. su skaičiaus kintamuoju kaip argumentu.
Čia atkreipkite dėmesį į pareiškimą,
return n * factorial(n-1);
factorial()
Metodas yra pasivadinusi. Iš pradžių n vertė yra 4 viduje factorial()
. Per kitą rekursinį skambutį factorial()
metodas perduodamas 3 . Šis procesas tęsiasi tol, kol n yra lygus 0.
Kai n yra lygus 0, if
sakinys grąžina klaidingą, todėl grąžinamas 1. Galiausiai sukauptas rezultatas perduodamas main()
metodui.
Faktorinės programos darbas
Žemiau pateiktas paveikslėlis padės geriau suprasti, kaip faktorių programa vykdoma naudojant rekursiją.

Rekursijos privalumai ir trūkumai
Kai atliekamas rekursinis skambutis, ant kamino priskiriamos naujos kintamųjų saugojimo vietos. Kiekvienam rekursiniam skambučiui grįžus, senieji kintamieji ir parametrai pašalinami iš rietuvės. Taigi rekursija paprastai naudoja daugiau atminties ir paprastai yra lėta.
Kita vertus, rekursinis sprendimas yra daug paprastesnis ir užtrunka mažiau laiko rašyti, derinti ir prižiūrėti.
Rekomenduojamas skaitymas: Kokie yra rekurso pranašumai ir trūkumai?