En lite brukt begrep i C er funksjon rekursjon . En rekursiv funksjon er rett og slett en funksjon som kaller seg . Rekursive funksjoner kan være nyttig i visse funksjoner , men kan vanligvis bli erstattet ved hjelp av en løkke . Formålet med rekursiv funksjon
En rekursiv funksjon kan benyttes når en operasjon må utføres gjentatte ganger på et sett av data . For eksempel kan en rekursiv funksjon gjentatte ganger utføre en matematisk operasjon på en numerisk verdi inntil en betingelse er oppfylt .
Opprette en rekursiv funksjon
Enhver funksjon som kaller seg er en rekursiv funksjon . Det er ingen spesielle krav til en funksjon for å kalle seg selv , det kan gjøre det så cait vil kalle noen annen funksjon. Som et eksempel , er følgende en rekursiv funksjon for å beregne neste nummer i en fibonacci sekvens : en
lang løgn ( lang n )
{
if ( n < = 2 )
{
tilbake 1;
}
annet
{
retur løgn (n - 1 ) + liten løgn (n - 2 ) ;
}
}
Problemer med Rekursjon
Rekursjon har flere mulige problemer som bør vurderes før du skriver en rekursiv funksjon . Rekursive funksjoner kan være svært ineffektive , ikke bare er det en stabel overhead fra gjentatte ganger kaller funksjonen , kan rekursive funksjoner lett ende opp med eksponentiell kjører ganger avhengig av hvor de er skrevet . Rekursive funksjoner også kjøre en risiko for å forårsake en stack overflow dersom antall rekursive samtaler er for høy .
Rekursjon Vs . Iterasjon
Mest rekursive funksjoner kan implementeres som en ikke- rekursiv funksjon som bruker en iterativ loop. Dette pleier å være mer effektiv og sikrere , men i noen tilfeller kan være vanskeligere å skrive og å lese.
Rekursive funksjoner er oftest brukt når du navigerer en trestruktur , eller når du bruker iterasjon ville gjøre fungere mye mer kompleks . I de fleste andre tilfeller bør iterasjon brukes i stedet.