Rekursiv funktion i C

July 20

Rekursiv funktion i C


En lidet anvendt begreb i C er funktionen rekursion. En rekursiv funktion er simpelthen en funktion, der kalder sig selv. Rekursive funktioner kan være nyttige i visse funktioner, men kan normalt erstattes ved hjælp af en løkke.

Formål med rekursiv funktion

En rekursiv funktion kan anvendes, når en operation skal udføres gentagne gange på et sæt data. For eksempel kan en rekursiv funktion gentagne gange udføre en matematisk operation på en numerisk værdi, indtil en betingelse er opfyldt.

Oprettelse af en rekursiv funktion

Enhver funktion, der kalder sig selv er en rekursiv funktion. Der er ingen særlige krav til en funktion til at kalde sig; det kan gøre så cait ville kalde enhver anden funktion. Som et eksempel, følgende er en rekursiv funktion til at beregne det næste nummer i en fibonacci sekvens:

lang fib (lang n)

{

if (n <= 2)

{

return 1;

}

andet

{

return fib( n - 1 ) + fib( n - 2 );

}

}

Problemer med Rekursion

Rekursion har flere mulige problemer, der bør overvejes, før du skriver en rekursiv funktion. Rekursive funktioner kan være meget ineffektiv, ikke alene er der en stak hovedet fra gentagne gange at kalde funktionen, kan rekursive funktioner let ende med eksponentielle køretider afhængigt af hvordan de er skrevet. Rekursive funktioner også løbe en risiko for at forårsage en stakoverløb hvis antallet af rekursive kald er for høj.

Rekursion Vs. iteration

De fleste rekursive funktioner kan implementeres som en ikke-rekursiv funktion, som bruger en iterativ sløjfe. Denne tendens til at være mere effektiv og sikrere, men i nogle tilfælde kan være mere svært at skrive og læse.

Rekursive funktioner anvendes oftest, når du navigerer en træ-lignende struktur, eller ved brug af iteration ville gøre funktionen meget mere kompleks. I de fleste andre tilfælde bør iteration anvendes i stedet.


relaterede artikler