Nøkkelforskjell: Ved programmering kan rekursjon forklares ved å vurdere en rekursiv funksjon. En rekursiv funksjon er en som kaller seg igjen for å gjenta koden. På den annen side oppnås iterasjon med en iterativ funksjon som slår for å gjenta noen del av koden.
I programmering brukes både rekursjon og iterasjon for å oppnå repetisjoner. De refererer til en prosess som gjentas mange ganger. Rekursjon er basert på en tilnærming der noe refererer til seg selv til en tilstand er oppfylt. En metode sies å være rekursiv hvis den kan kalle seg enten direkte eller indirekte som -
{
... Navn() ...
}
eller
tomt navn ()
{
... spill () ...
}
tomt spill () {
... Navn() ...
}
For en vellykket rekursjon må man huske på at hvert anrop gjort i rekursjonsprosessen må forenkle beregningen. Rekursjon oppnås ved å definere en basis sak.
int factorial (int N)
{
hvis (N == 0) returnere 1;
ellers returnere (N * faktorial (N-1));
}
I dette eksemplet kan rekursjon lett ses i setningen (N * faktorial (N-1)), der den kalder den faktoriale funksjonen igjen. Rekursjon er veldig nyttig, da det hjelper med å forkorte koden. Rekursjonen er imidlertid litt langsom i ytelsen.
fungere faktorial (n)
{
var loop, resultat;
resultat = 1;
for (loop = 1; sløyfe <= n; sløyfe ++)
{
resultat = resultat * loop;
}
returresultat;
}
I dette eksemplet oppnås looping ved å bruke heltall fra 1 til n, og loop <= n-setningen brukes som et kriterium for å stoppe videre looping. Dermed kan vi konkludere med at de samme resultatene kan oppnås ved å bruke en rekursjon og iterasjon. Imidlertid er de begge basert på tilnærminger som er litt forskjellige. Eventuell rekursiv algoritme kan også skrives ved hjelp av iterasjoner (looper).
Sammenligning mellom rekursjon og gjentagelse:
rekursjon | køyring | |
Definisjon | Rekursjon refererer til en rekursiv funksjon der den kaller seg igjen for å gjenta koden. | Iterasjon oppnås ved en iterativ funksjon som løkker for å gjenta noen del av koden. |
Viktig poeng | En grunnleggende sak må bestemmes | En oppsigelsestilstand må bestemmes |
Opptreden | Sammenlignet sakte | Relativt raskt |
Minnebruk | Forholdsvis mer | Relativt mindre |
Kode | mindre | lengre |
Uendelig repetisjon | Uendelig rekursjon er i stand til å krasje systemet | Uendelig looping bruker CPU sykluser gjentatte ganger |
Struktur | utvalg | Gjentakelse |
Lokale variabler | Ikke obligatorisk | Må |