Rekursiv funksjon i C

Rekursiv funksjon i C


Ett lite brukt begrep i C er funksjon rekursjon. En rekursiv funksjon er ganske enkelt 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 ved en operasjon som 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 til en betingelse er oppfylt.

Opprette en rekursiv funksjon

Enhver funksjon som kaller seg selv 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 det følgende en rekursiv funksjon å beregne den neste tall i en fibonacci sekvens:

lang fib (lang n)

{

if (n <= 2)

{

return 1;

}

ellers

{

return fib( n - 1 ) + fib( 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 stakkoverflyt hvis antallet rekursive samtaler er for høy.

Rekursjon Vs. køyring

De rekursive funksjoner kan implementeres som en ikke-rekursiv funksjon som bruker en iterativ sløyfe. Dette har en tendens til å være mer effektiv og sikrere, men i noen tilfeller kan være mer vanskelig å skrive og lese.

Rekursive funksjoner er oftest brukt når du navigerer en trestruktur, eller når du bruker iterasjon vil gjøre funksjonen mye mer kompleks. I de fleste andre tilfeller bør iterasjon brukes i stedet.