Vitajte na [www.pocitac.win] Pripojiť k domovskej stránke Obľúbené stránky
Programátori používajú rekurzívne metódy na riešenie konkrétnych problémov . Samozrejme rekurzívne metóda nebude poskytovať užitočné funkcie , pokiaľ to nerieši problém , ktorý bol navrhnutý pre . To sa niekedy stane , keď programátor sa rozhodli použiť rekurzívne funkciu , kde to nie je vhodné . Všeobecne platí , že rekurzívne metóda je ideálna pre situácie , v ktorej budete musieť vyriešiť problém pomocou iteračných krokov . Zakaždým , keď sa metóda vykonáva , je potrebné , aby tento problém zjednodušiť a priniesť svoj program o krok bližšie k riešeniu . Konečný výsledok rekurzívne metódy by malo byť riešenie vášho problému , napríklad Vyhľadanie prvku v objekte zberu dát .
No End Case
Aby rekurzívne funkcie pracovať bez toho, aby sa program zasekol v nekonečnej slučke , musí mať dobre definovaný koniec prípadu . To znamená , že musí existovať konečné prevedenie , skôr ako spôsob vykonávania donekonečna . Programátori často vykonávať toto použitie podmienené príkazy vnútri metódy , ako v nasledujúcom príklade : public void doItRecursively ( int num ) { if ( num < 1 ) return ; else { System.out.println ( num ) ; doItRecursively ( num /2 ) ; } }
Ak chcete volať túto funkciu , program , môžete použiť nasledujúci kód : doItRecursively ( 10 ) ;
V tomto prípade bude funkcia vykonávať päťkrát , ukončenie na piatej iteráciu . Zakaždým , keď sa metóda vykonáva sa blíži ku konečnému scenáru , ktorý podmienený príkaz if skontroluje pre . Je-li metóda neobsahoval podmienený príkaz , by to iterovat do nekonečna .
Nie Rekurzia
otázka proti nekonečne looping iteračné metóda je metóda , že nie je vôbec iteráciu . To tiež sa stane , keď podmienený príkaz nie je správne štruktúrované . Napríklad , s ohľadom na spôsob " doItRecursively " , nasledujúce zmenené if by spôsobiť problém : if ( num > 0 ) return ;
Ak metóda je len volaná s kladnou celočíselnú hodnotu ako parameter , jeho obsah sa nikdy iterácii as bolo dosiahnuté hneď koncový bod .
Nesprávna metóda vyzýva
Ak programátor volanie rekurzívne metódy nemá jasný prehľad o jeho funkcie , môžu použiť takým spôsobom , ktorý spôsobuje , že nekonečné opakovanie alebo žiadne opakovanie . Napríklad, nasledujúci zmenená podmienené kód v metóde môže ľahko byť nazývaný nesprávne : if ( num < 0 ) return ;
Ak metóda je volaná len s kladnými hodnotami integer parameter , bude to nikdy dosiahnuť tohto koncového bodu a spôsobí nekonečnú slučku . Rekurzívne metódy môžu spôsobiť mnoho z rovnakých úskalia ako slučky , takže to vyžaduje prax pre účinné vykonávanie .