(JS) Hogy érthetik ezt?
oldalon azzal kezd a feladatok listájánál, hogy használj rekurziót a megoldáshoz. Magánúton tanulva eddig a w3schools-on codeacademy-n stb. még névleg sem találkoztam ezzel a kifejezéssel, utánaolvasva wikipedia-n sem teljesen világos, mire gondolt a költő. Felvilágosítanátok?
Hát, pedig szerintem érthetően le van írva, példák is vannak, nem csak programozáshoz:
Ez:
function valami() {
.. valami();
}
#4 Ez gyönyörű volt :)
A rekurzió lényege az, hogy egy alprogram (nevezzük függvénynek) a futása során meghívja saját magát rendszerint valamilyen feltétellel.
Pl JS-ben így nézne ki egy rekurzív függvény, ami a megadott számtól 0-ig visszaszámol, kiírva sorbana számokat.
function countdown(number)
{
console.log(number);
if(number > 0) countdown (number-1);
}
Ha mondjuk ezt meghívjuk 5-el, először kiírja az 5-öt, majd újra meghívja magát 4-el, kiírja a négyet, majd meghívja magát 3-al, és így tovább, amíg el nem ér 0-ig.
Namost ha azt akarjuk, hogy 0-tól ELŐREFELÉ számoljona megadott számig, elég ha megcseréljük a két sort.
function count(number)
{
if(number >0) count (number-1);
console.log(number);
}
Ekkor először egymásba ágyazva újra és újra meghívja magát, amíg elér 0-ig, majd elkezdi szépen kiírogatnia számokat. Namost itt meg kell érteni azt, hogy a rekurzív hívás nem olyan, hogy a függvény újraindul más értékkel, hanema függvényen belül meghívjuka függvény egy másik példányát, de az eredeti függvény futása ettől még nem fejeződik be, csak szünetel, amíg a rekurzívan meghívott példány futása véget nem ér. Ezért van az, hogy a második példában előrefelé fog számolni. A függvény az első sorában meghívja magát, így létrehoz egy új példányt, ami szintén létrehoz eg y új példányt, és ez így lépcsőzik egyre mélyebbre, amíg el nem érünk a megállási feltételhez. Ekkor a 'legalsó' példány, ahol a paraméter 0, szépen végig lefut, majd ha véget ért, akkor az eggyel felette levő folytatódik a függvényhívás utáni utasítással. Ha az is véget ért, akkor a felette levő példány is folytathatja a működését, és így tovább, míg a legfelső, 5-el paraméterezett példány is lefut, utolsóként.
Ez így capiche?
Kapcsolódó kérdések:
Minden jog fenntartva © 2025, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!