Gå til indholdet

Rekursive metoder

Rekursive metoder er en programmeringsteknik, hvor en metode kalder sig selv for at løse et problem i mindre, enklere dele. Rekursion kan være en effektiv og elegant løsning for visse typer af problemer, såsom iterering gennem noder i et træ, beregning af faktorielle tal og Fibonacci-tal.

Når en metode er rekursiv, indeholder den typisk en basisbetingelse og en rekursiv regel. Basisbetingelsen er en simpel del af problemet, som kan løses direkte uden yderligere rekursion, mens den rekursive regel definerer, hvordan problemet kan opdeles i mindre dele og løses ved at kalde metoden igen.

En vigtig faktor, der skal overvejes ved brug af rekursive metoder, er stacken. Når en metode kaldes, oprettes der en stack frame, der indeholder metodeparametre og lokale variabler. Hver gang en rekursiv metode kalder sig selv, oprettes der en ny stack frame. Hvis rekursionen bliver for dyb, kan stacken løbe tør for plads og forårsage en stack overflow-fejl. Derfor er det vigtigt at sikre, at basisbetingelsen er korrekt defineret, og at rekursionen konvergerer mod basisbetingelsen.

Rekursion er ikke altid den mest effektive løsning og kan i nogle tilfælde erstattes med iterativ kode. Iterative løsninger bruger typisk løkker og kan være mere effektive i forhold til hukommelsesforbrug og hastighed. Valget mellem rekursive og iterative løsninger afhænger af problemets natur, ydeevnekrav og kodeklarhed.

Her er det klassike “loop” eksempel:

RekusivMetode(1, 5);

void RekusivMetode(int start, int stop) {
    Console.WriteLine(start);
    if (start == stop)
        return;
    start++;
    RekusivMetode(start, stop);
}


/*
 ---------- Output: ----------

1
2
3
4
5

*/