Forskjellen mellom rekursjon og itterasjon

Forfatter: Laura McKinney
Opprettelsesdato: 1 April 2021
Oppdater Dato: 4 Kan 2024
Anonim
difference between recursion and iteration
Video: difference between recursion and iteration

Innhold


Rekursjon og iterasjon utfører begge gjentatte sett instruksjoner. Rekursjon er når en uttalelse i en funksjon kaller seg gjentatte ganger. Iterasjonen er når en løkke gjentatte ganger kjøres til kontrollerende tilstand blir falsk. Den primære forskjellen mellom rekursjon og iterasjon er at det er en rekursjon er en prosess, alltid brukt på en funksjon. De køyring brukes på settet med instruksjoner som vi ønsker å bli utført gjentatte ganger.

  1. Sammenligningstabell
  2. Definisjon
  3. Viktige forskjeller
  4. Konklusjon

Sammenligningstabell

Grunnlag for sammenligningrekursjonkøyring
grunn~~POS=TRUNCUttalelsen i et organ med funksjon kaller selve funksjonen.Lar settet med instruksjoner utføres gjentatte ganger.
FormatI rekursiv funksjon spesifiseres bare termineringstilstand (base case).Iterasjon inkluderer initialisering, tilstand, utførelse av uttalelse i loop og oppdatering (trinn og reduksjoner) kontrollvariabelen.
AvslutningEn betinget uttalelse er inkludert i hoveddelen av funksjonen for å tvinge funksjonen til å returnere uten at rekursjonsanrop blir utført.Iterasjonsuttalelsen utføres gjentatte ganger til en viss tilstand er nådd.
BetingelseHvis funksjonen ikke konvergerer til en tilstand som kalles (base case), fører den til uendelig rekursjon.Hvis kontrolltilstanden i iterasjonsuttalelsen aldri blir falsk, fører det til uendelig iterasjon.
Uendelig repetisjonUendelig rekursjon kan krasje systemet.Infinite loop bruker CPU-sykluser gjentatte ganger.
AnvendtRekursjon brukes alltid til funksjoner.Iterasjon brukes på iterasjonsuttalelser eller "løkker".
StableBunken brukes til å lagre settet med nye lokale variabler og parametere hver gang funksjonen kalles.Bruker ikke stabel.
overheadRekursjon har overhead av gjentatte funksjonssamtaler.Ingen overhead av gjentatt funksjonsanrop.
HastighetSakte i henrettelse.Rask i utførelse.
Størrelse på kodeRekursjon reduserer størrelsen på koden.Iterasjon gjør koden lengre.


Definisjon av rekursjon

C ++ tillater en funksjon å kalle seg innenfor koden. Det betyr at definisjonen av funksjonen har en funksjonskall til seg selv. Noen ganger kalles det også “sirkulær definisjon“. Settet med lokale variabler og parametere som brukes av funksjonen, er nyopprettet hver gang funksjonen ringer seg og lagres øverst i bunken. Men hver gang en funksjon kaller seg selv, oppretter den ikke en ny kopi av den funksjonen. Den rekursive funksjonen reduserer ikke størrelsen på koden betydelig og forbedrer ikke engang hukommelsesutnyttelsen, men den gjør det noen sammenligning med iterasjonen.

For å avslutte rekursjonen, må du ta med et valgt utsagn i definisjonen av funksjonen for å tvinge funksjonen til å returnere uten å gi et rekursivt anrop til seg selv. Fraværet av den valgte uttalelsen i definisjonen av en rekursiv funksjon lar funksjonen i uendelig rekursjon en gang kalles.


La oss forstå rekursjon med en funksjon som vil returnere nummeret.

int factorial (int num) {int svar; if (num == 1) {return 1; } annet {svar = factorial (num-1) * num; // rekursiv samtale} retur (svar); }

I koden over viser utsagnet i den andre delen rekursjonen, ettersom utsagnet kaller funksjonen factorial () der den ligger.

Definisjon av Iteration

Iteration er en prosess for å utføre settet med instruksjoner gjentatte ganger til tilstanden i iterasjonsuttalelsen blir falsk. Iterasjonsuttalelsen inkluderer initialisering, sammenligning, utførelse av utsagnene i iterasjonsuttalelsen og til slutt oppdatering av kontrollvariabelen. Etter at kontrollvariabelen er oppdatert, blir den sammenlignet igjen, og prosessen gjentar seg, inntil tilstanden i iterasjonsuttalelsen viser seg å være falsk. Uttalingsuttalelsene er “for” loop, “while” loop, “do-while” loop.

Iterasjonsuttalelsen bruker ikke en stabel til å lagre variablene. Derfor blir utførelsen av iterasjonsuttalelsen raskere sammenlignet med rekursiv funksjon. Til og med iterasjonsfunksjonen har ikke overhead av gjentatte funksjonskallinger som også gjør dens utførelse raskere enn rekursiv funksjon. Iterasjonen avsluttes når kontrolltilstanden blir falsk. Fravær av kontrolltilstand i iterasjonsuttalelse kan føre til en uendelig sløyfe, eller det kan føre til en samlefeil.

La oss forstå iterasjonen angående eksemplet ovenfor.

int factorial (int num) {int svar = 1; // trenger initialisering fordi den kan inneholde en søppelverdi før dens initialisering for (int t = 1; t> num; t ++) // iterasjon {svar = svar * (t); retur (svar); }}

I koden over returnerer funksjonen fabrikknummeret til nummeret ved hjelp av iterasjonsuttalelse.

  1. Rekursjon er når en metode i et program gjentatte ganger kaller seg, mens iterasjon er når et sett med instruksjoner i et program kjøres gjentatte ganger.
  2. En rekursiv metode inneholder sett med instruksjoner, utsagn som ringer seg selv, og en avslutningsbetingelse, mens iterasjonssetninger inneholder initialisering, økning, betingelse, sett med instruksjoner i en sløyfe og en kontrollvariabel.
  3. En betinget uttalelse bestemmer avslutningen av rekursjon og kontrollvariabelens verdi bestemmer avslutningen av iterasjonsuttalelsen.
  4. Hvis metoden ikke fører til termineringstilstanden, går den inn i uendelig rekursjon. På den annen side, hvis kontrollvariabelen aldri fører til avslutningsverdien, itererer det utsagnet uendelig.
  5. Uendelig rekursjon kan føre til systemkrasj, mens uendelig iterasjon bruker CPU-sykluser.
  6. Rekursjon brukes alltid på metode, mens iterasjon brukes på instruksjonssett.
  7. Variabler opprettet under rekursjon lagres i bunken, mens iterasjon ikke krever en stabel.
  8. Rekursjon forårsaker overhead av gjentatt funksjonsanrop, mens iterasjonen ikke har en funksjon som ringer overhead.
  9. På grunn av funksjonen er det langsommere å utføre rekursjon, mens utførelsen av iterasjonen er raskere.
  10. Rekursjon reduserer størrelsen på koden, mens iterasjoner gjør en kode lenger.

Konklusjon:

Den rekursive funksjonen er enkel å skrive, men de klarer seg ikke bra sammenlignet med iterasjon, mens iterasjonen er vanskelig å skrive, men ytelsen er god sammenlignet med rekursjonen.