Potrebe po ponovitvi kode nikoli ne moremo podcenjevati pri iskanju rešitev za nekatere največje svetovne težave. Kar morate vedeti, je, da ima ponavljanje pri programiranju eno od dveh oblik - iteracijo ali rekurzijo.
Cilj tukaj je predstaviti vam ponavljanje kode in pokazati, kako se lahko uporablja za izboljšanje vaših programov Java.
Ponavljajoči se programi vam lahko pomagajo rešiti nekatere najtežje programske težave. Tukaj je tisto, kar morate vedeti za ustvarjanje rekurzivnih programov v Javi.
Uporaba ponovitve
Ponavljanje uporablja strukturo zanke za ponavljanje kode. Tri vrste iterativnih struktur so zanka pred preskusom (while), zanka po preskusu (do-while) in kontra-krmiljena zanka (za).
Te iterativne strukture delujejo tako, da ponavljajo blok kode, medtem ko ostane poseben pogoj true, a takoj, ko to stanje postane false, se zanka ustavi in program se vrne v normalno stanje pretok.
Na primer, lahko uporabimo eno od iterativnih struktur za reševanje problema vsote vseh celih števil od 1 do n. Odvisno od uporabljene iterativne strukture bo imela rešitev posebno obliko, vendar katero koli od tri iterativne strukture lahko rešijo to težavo z naslednjim psevdokod.
Primer ponavljanja psevdokode
START
DECLEARE vsota, šteje se kot celo število
vsota = 0
štetje = 1
PONOVITI
Vsota = vsota + štetje
Štetje = štetje + 1
DO štetja> n
KONEC
Zgornja psevdokoda ima dve spremenljivki, sum in count, ki sta inicializirani na 0 oziroma 1. Spremenljivka "count" je inicializirana na 1, ker težava, ki jo poskušamo rešiti, navaja, da potrebujemo vsoto vseh celih števil od 1 do n.
Spremenljivki "n" bo uporabnik dodelil naključno številko, spremenljivka "count" pa se bo povečala za eno ko se izvede zanka, a takoj ko vrednost spremenljivke "count" preseže vrednost "n", bo zanka ustavi se.
Zakaj uporabljati rekurzijo?
Če bi preučili dejstva v zvezi s ponavljanjem in ponovitvijo, bi ugotovili, da je nekaj resničnih.
- Obe metodi vključujeta ponavljanje.
- Obe metodi zahtevata preskusni pogoj, ki bo pokazal, kdaj se ustaviti.
- Obe metodi se lahko teoretično izvajata za vedno, če izhodni pogoj ni podan ali izpolnjen.
- Vsako težavo, ki jo je mogoče rešiti z uporabo iteracije, lahko rešimo tudi z uporabo rekurzije in obratno.
Zakaj bi torej želeli izbrati eno od drugih? Preprost odgovor je učinkovitost. Z rekurzijo lahko programer uporabi manj kode, da doseže v bistvu enak rezultat. Manj kode pomeni, da se znatno zmanjša možnost napak, ki ostanejo neopažene.
Rekurzija porabi več pomnilnika in je počasnejša od ponovitve, vendar ima vgrajen sklad (podatkovna struktura). Z iteracijo bi morali zgraditi podatkovno strukturo (v bistvu znova izumiti kolo), tako da bi bil program odprt za večjo možnost ujetih napak zaradi dodatne kode.
Sorodno: Izjeme Java: Ali z njimi ravnate pravilno?
Kako deluje rekurzija
Rekurzija je ime procesa, pri katerem se funkcija večkrat pokliče, dokler ni izpolnjen določen pogoj. Ta ponavljajoča se metoda rešuje probleme tako, da jih razdeli na manjše, enostavnejše različice.
Vsaka rekurzivna funkcija je sestavljena iz dveh delov - osnovnega in splošnega primera.
Osnovna struktura primera rekurzivne funkcije
Funkcija () {
// osnovni primer
// splošni primer
}
Osnovni primer je odsek rekurzivne funkcije, ki reši problem. Torej, kadar koli rekurzivna funkcija prispe v osnovni primer, program zapusti rekurzivno funkcijo in nadaljuje s svojim naravnim tokom.
Splošni primer je odsek rekurzivne funkcije, ki se ponavlja. Tu se funkcija sama pokliče in tam opravi večino dela.
Uporaba rekurzije v Javi
Nekateri programski jeziki podpirajo samo ponavljanje, drugi pa samo rekurzijo. Na srečo je Java eden izmed jezikov, ki podpira oba ponavljajoča se načina.
V Javi se rekurzija uporablja približno enako kot v katerem koli drugem jeziku, ki jo podpira. Ključno je, da vedno zagotovite, da ima vaša rekurzivna funkcija tako osnovni kot splošni primer v tem vrstnem redu.
Vrnimo se na naš začetni primer seštevanja, cilj je najti vsoto vseh celih števil od 1 do n, kjer je n celoštevilčno število, ki ga navede uporabnik.
Primer Java rekurzije
// rekurzivna funkcija
int vsota (int n) {
// osnovni primer
če (n <= 1) {
vrnitev 1;
}
// splošni primer
sicer {
vrnitev n + vsota (n-1);
}
}
Zgornja rekurzivna funkcija sprejme celo število „n“ in zaključi svoje izvajanje le, če je vrednost n manjša ali enaka 1.
Če bi celo število 5 prenesli v zgornji program, bi spremenljivka "n" prevzela vrednost 5. Vrednost "n" bi bila nato preverjena v osnovnem primeru, toda glede na to, da je 5 večje od 1 "n", bo zdaj prenesena na splošni primer.
V tem primeru bo splošni primer štirikrat poklical rekurzivno funkcijo. V končnem klicu funkcije bo vrednost "n" enaka 1, kar dejansko izpolnjuje zahteve osnovnega primera, kar povzroči prekinitev rekurzivne funkcije in vrnitev 15.
Če spremenimo vrednost "n" na 7, se rekurzivna funkcija šestkrat pokliče in vrne 28, preden zaključi svoje izvajanje.
Bi ga želeli preizkusiti tudi sami? Zgornji rekurzivni program lahko izvedete z uporabo naslednje vrstice kode v glavni funkciji vašega programa Java.
System.out.println (Vsota (7));
Kaj ste se naučili
Če ste se prebili skozi celoten članek, imate zdaj osnovno razumevanje dveh ponavljajočih se metod, ki se uporabljata pri programiranju. Zdaj prepoznate podobnosti med ponavljanjem in rekurzijo in zakaj bi se razvijalec odločil za uporabo rekurzije nad iteracijo ter kako uporabiti rekurzivno funkcijo v Javi.
Zasluga za sliko: ThisIsEngineering /Pekslov
Spoznajte osnove rekurzije, bistvenega, a nekoliko motečega orodja za programerje.
Preberite Naprej
- Programiranje
- Java
Kadeisha Kean je razvijalka programske opreme s polnim skladom in pisateljica tehničnih / tehnoloških tehnologij. Ima izrazito sposobnost poenostavitve nekaterih najbolj zapletenih tehnoloških konceptov; izdelujejo materiale, ki jih lahko zlahka razumejo vsi začetniki tehnologije. Navdušena je nad pisanjem, razvojem zanimive programske opreme in potovanjem po svetu (skozi dokumentarne filme).
Naročite se na naše novice
Pridružite se našemu glasilu za tehnične nasvete, preglede, brezplačne e-knjige in ekskluzivne ponudbe!
Še en korak…!
Potrdite svoj e-poštni naslov v e-poštnem sporočilu, ki smo vam ga pravkar poslali.