One mindre udnyttede koncept 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 sædvanligvis erstattes ved hjælp af en løkke . Formål med rekursiv funktion
rekursiv funktion kan bruges, når en operation skal udføres gentagne gange på et sæt af data. For eksempel kan en rekursiv funktion gentagne gange udfører 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 selv, det kan gøre det, så cait ville kalde nogen anden funktion. Som et eksempel, er det følgende en rekursiv funktion til at beregne det næste tal i en fibonacci sekvens : Hej
lange fib ( lang n )
{
if ( n < = 2)
{
tilbagevenden 1;
}
ellers
{
retur fib (n - 1) + fib (n - 2),
}
}
Problemer med Recursion
Recursion 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 kalde funktionen , kan rekursive funktioner let ende med eksponentielle køretider afhængigt af hvordan de er skrevet . Rekursive funktioner også køre en risiko for at forårsage en stak overflow , hvis antallet af rekursive kald er for høj.
Recursion Vs. Iteration
Most rekursive funktioner kan implementeres som en ikke- rekursiv funktion , der bruger en iterativ løkke. Denne tendens til at være mere effektiv og sikrere, men i nogle tilfælde kan være vanskeligere at skrive og læse.
Rekursive funktioner er oftest bruges , når du navigerer en træ- lignende struktur , eller ved brug af iteration ville gøre fungerer meget mere kompleks . I de fleste andre tilfælde bør iteration bruges i stedet.