Pri hľadaní riešení na najväčšie problémy sveta nemožno nikdy podceňovať potrebu opakovania kódu. Musíte vedieť, že v programovaní má opakovanie jednu z dvoch foriem - iteráciu alebo rekurziu.
Cieľom je predstaviť vám opakovanie v kóde a demonštrovať, ako je možné ich použiť na vylepšenie vašich programov Java.
Opakujúce sa programy vám môžu pomôcť vyriešiť niektoré z najťažších problémov s programovaním. Tu je to, čo potrebujete vedieť na vytváranie rekurzívnych programov v Jave.
Pomocou iterácie
Iterácia používa na opakovanie kódu štruktúru slučky. Tri typy iteračných štruktúr sú slučka pred testom (while), smyčka po teste (do-while) a proti-riadená slučka (pre).
Tieto iteračné štruktúry fungujú opakovaním bloku kódu, kým zostáva konkrétna podmienka true, ale akonáhle sa táto podmienka stane neplatnou, slučka sa zastaví a program sa vráti do normálu tok.
Napríklad by sme mohli použiť jednu z iteračných štruktúr na riešenie problému so súčtom všetkých celých čísel od 1 do n. V závislosti na použitej iteračnej štruktúre bude mať riešenie konkrétnu formu, ale ľubovoľnú tri iteračné štruktúry môžu poskytnúť riešenie tohto problému pomocou nasledujúceho pseudokód.
Príklad iteračného pseudokódu
ŠTART
SÚBOR DECLEARE, počíta sa ako celé číslo
súčet = 0
počet = 1
OPAKOVAŤ
Súčet = súčet + počet
Počet = počet + 1
AŽ počet> n
KONIEC
Vyššie uvedený pseudokód má dve premenné, súčet a počet, ktoré sa inicializujú na 0, respektíve 1. Premenná "count" je inicializovaná na 1, pretože problém, ktorý sa snažíme vyriešiť, uvádza, že potrebujeme súčet všetkých celých čísel od 1 do n.
Premennej „n“ bude užívateľovi pridelené náhodné číslo a premennej „count“ bude každá stúpať o jednu čas vykonania slučky, ale akonáhle hodnota premennej „count“ presiahne hodnotu „n“, potom slučka bude zastav.
Prečo používať rekurziu?
Ak by sme mali preskúmať fakty týkajúce sa iterácie a rekurzie, zistíme, že niekoľko vecí je pravdivých.
- Obe metódy zahŕňajú opakovanie.
- Obe metódy vyžadujú testovací stav, ktorý bude indikovať, kedy sa má prestať.
- Obidve metódy sa môžu teoreticky spustiť navždy, ak nie je daná alebo splnená podmienka ukončenia.
- Akýkoľvek problém, ktorý je možné vyriešiť pomocou iterácie, je možné vyriešiť aj pomocou rekurzie a naopak.
Prečo by sme teda chceli zvoliť jednu metódu nad druhou? Jednoduchá odpoveď je efektívnosť. Pomocou rekurzie môže programátor použiť menej kódu na dosiahnutie v podstate rovnakého výsledku. Menej kódu znamená, že sa významne znižuje možnosť chýb chýb bez povšimnutia.
Rekurzia využíva viac pamäte a je pomalšia ako iterácia, má však zabudovaný zásobník (dátovú štruktúru). Pri iterácii by ste museli vytvoriť dátovú štruktúru (v podstate znovuobjaviť koleso) a nechať svoj program otvorený pre väčšiu možnosť nezachytených chýb v dôsledku dodatočného kódu.
Súvisiace: Výnimky Java: Máte s nimi pravdu?
Ako funguje rekurzia
Rekurzia je názov procesu, pri ktorom sa funkcia opakovane volá, kým nie je splnená konkrétna podmienka. Táto opakujúca sa metóda rieši problémy ich rozdelením na menšie a jednoduchšie verzie.
Každá rekurzívna funkcia sa skladá z dvoch častí - základného a všeobecného prípadu.
Základná štruktúra príkladu rekurzívnej funkcie
Funkcia () {
// základný prípad
// všeobecný prípad
}
Základným prípadom je časť rekurzívnej funkcie, ktorá rieši problém. Takže vždy, keď rekurzívna funkcia dorazí k základnému prípadu, program opustí rekurzívnu funkciu a pokračuje v jej prirodzenom toku.
Všeobecným prípadom je čast rekurzívnej funkcie, ktorá sa opakuje. Toto je miesto, kde si funkcia sama hovorí a kde sa robí prevažná časť práce.
Používanie rekurzie v Jave
Niektoré programovacie jazyky podporujú iba iteráciu, zatiaľ čo iné iba rekurziu. Našťastie je Java jedným z jazykov, ktoré podporujú obe opakujúce sa metódy.
V Jave sa rekurzia používa rovnakým spôsobom, ako sa používa v akomkoľvek inom jazyku, ktorý ju podporuje. Kľúčom je vždy zabezpečiť, aby vaša rekurzívna funkcia mala základný aj všeobecný prípad v tomto poradí.
Vráťme sa k nášmu počiatočnému príkladu súčtu, cieľom je nájsť súčet všetkých celých čísel od 1 do n, kde n je celé číslo poskytnuté používateľom.
Príklad Java rekurzie
// rekurzívna funkcia
int suma (int n) {
// základný prípad
if (n <= 1) {
návrat 1;
}
// všeobecný prípad
else {
návrat n + súčet (n-1);
}
}
Vyššie uvedená rekurzívna funkcia berie celé číslo „n“ a ukončí svoje vykonávanie, iba ak je hodnota n menšia alebo rovná 1.
Ak by sme predali celé číslo 5 vyššie uvedenému programu, premenná „n“ by mala hodnotu 5. Hodnota „n“ by sa potom skontrolovala v základnom prípade, ale vzhľadom na to, že 5 je väčšie ako 1, „n“ sa teraz odovzdá všeobecnému prípadu.
V tomto príklade všeobecný prípad zavolá rekurzívnu funkciu štyrikrát. Pri konečnom volaní funkcie bude hodnota „n“ 1, čo efektívne spĺňa požiadavky základného prípadu, čo má za následok ukončenie rekurzívnej funkcie a návrat 15.
Ak zmeníme hodnotu „n“ na 7, rekurzívna funkcia sa zavolá šesťkrát a vráti 28 pred ukončením vykonania.
Chcete to vyskúšať na vlastnej koži? Vyššie uvedený rekurzívny program môžete vykonať pomocou nasledujúceho riadku kódu v hlavnej funkcii vášho Java programu.
System.out.println (súčet (7));
Čo si sa naučil
Ak ste to prešli celým týmto článkom, teraz máte základné znalosti o dvoch opakujúcich sa metódach, ktoré sa používajú v programovaní. Teraz poznáte podobnosti medzi iteráciou a rekurziou a prečo by sa vývojár rozhodol používať rekurziu nad iteráciou a ako používať rekurzívnu funkciu v Jave.
Image Credit: ThisIsEngineering /Pexels
Naučte sa základy rekurzie, základného, ale mierne prelomiteľného nástroja pre programátorov.
Prečítajte si Ďalej
- Programovanie
- Java
Kadeisha Kean je softwarová vývojárka a autorka technických / technologických noviniek. Má výraznú schopnosť zjednodušovať niektoré z najkomplexnejších technologických konceptov; výroba materiálu, ktorý ľahko pochopí každý technologický nováčik. Venuje sa písaniu, vývoju zaujímavého softvéru a cestovaniu po svete (prostredníctvom dokumentov).
Prihlásiť sa ku odberu noviniek
Pripojte sa k nášmu bulletinu s technickými tipmi, recenziami, bezplatnými elektronickými knihami a exkluzívnymi ponukami!
Ešte jeden krok…!
V e-maile, ktorý sme vám práve poslali, potvrďte svoju e-mailovú adresu.