Forskellen mellem rekursion og itteration

Forfatter: Laura McKinney
Oprettelsesdato: 1 April 2021
Opdateringsdato: 5 Kan 2024
Anonim
Section, Week 5
Video.: Section, Week 5

Indhold


Rekursion og iteration udfører begge gentagne gange sæt instruktioner. Rekursion er, når en sætning i en funktion kalder sig gentagne gange. Iterationen er, når en løkke gentagne gange udføres, indtil den kontrollerende betingelse bliver falsk. Den primære forskel mellem rekursion og iteration er, at det er en rekursion er en proces, der altid anvendes til en funktion. Det iteration anvendes til det sæt instruktioner, som vi vil gentagne gange udføre.

  1. Sammenligningstabel
  2. Definition
  3. Vigtige forskelle
  4. Konklusion

Sammenligningstabel

Grundlag for sammenligningrekursiongentagelse
GrundlæggendeUdsagnet i et organ af funktion kalder selve funktionen.Tillader, at sæt instruktionerne udføres gentagne gange.
FormatI rekursiv funktion specificeres kun termineringstilstand (base case).Iteration inkluderer initialisering, betingelse, eksekvering af sætning inden for loop og opdatering (inkrementer og reduktioner) kontrolvariablen.
AfslutningEn betinget erklæring er inkluderet i hoveddelen af ​​funktionen for at tvinge funktionen til at vende tilbage uden at rekursionsopkald udføres.Iterationserklæringen udføres gentagne gange, indtil en bestemt betingelse er nået.
TilstandHvis funktionen ikke konvergerer til en eller anden tilstand, der kaldes (base case), fører den til uendelig rekursion.Hvis kontrolbetingelsen i iterationssætningen aldrig bliver falsk, fører det til uendelig iteration.
Uendelig gentagelseUendelig rekursion kan ødelægge systemet.Infinite loop bruger CPU-cyklusser gentagne gange.
AnvendtRekursion anvendes altid til funktioner.Iteration anvendes til iterationsangivelser eller "loops".
StakStakken bruges til at gemme sættet med nye lokale variabler og parametre, hver gang funktionen kaldes.Bruger ikke stak.
OverheadRekursion har overhead af gentagne funktionskald.Intet overhead af gentaget funktionskald.
HastighedLangsom i udførelse.Hurtig i udførelse.
Størrelse af kodeRekursion reducerer størrelsen på koden.Iteration gør koden længere.


Definition af rekursion

C ++ tillader en funktion at kalde sig selv inden for dens kode. Det betyder, at definitionen af ​​funktionen besidder et funktionskald til sig selv. Nogle gange kaldes det også “cirkulær definition”. Sættet med lokale variabler og parametre, der bruges af funktionen, oprettes nyligt, hver gang funktionen ringer til sig selv og gemmes øverst i stakken. Men hver gang en funktion kalder sig selv, opretter den ikke en ny kopi af denne funktion. Den rekursive funktion reducerer ikke størrelsen på koden markant og forbedrer ikke engang hukommelsesudnyttelsen, men den gør nogle i sammenligning med iterationen.

For at afslutte rekursionen skal du medtage en markeret erklæring i definitionen af ​​funktionen for at tvinge funktionen til at vende tilbage uden at give et rekursivt opkald til sig selv. Fraværet af den valgte sætning i definitionen af ​​en rekursiv funktion lader funktionen i uendelig rekursion, når den først kaldes.


Lad os forstå rekursion med en funktion, der vender tilbage til nummeret.

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

I ovenstående kode viser udsagnet i den anden del rekursionen, da udsagnet kalder funktionen factorial (), hvor den ligger.

Definition af Iteration

Iteration er en proces til at udføre sæt instruktioner gentagne gange, indtil betingelsen i iterationserklæring bliver falsk. Iterationserklæringen inkluderer initialisering, sammenligning, eksekvering af udsagnene inde i iterationserklæringen og til sidst opdatering af kontrolvariablen. Når kontrolvariablen er opdateret, sammenlignes den igen, og processen gentager sig, indtil betingelsen i iterationssætningen viser sig at være falsk. Iterationsangivelserne er “for” -sløjfe, “mens” -sløjfe, “gør-mens” -sløjfe.

Iterationsangivelsen bruger ikke en stak til at gemme variablerne. Derfor er udførelsen af ​​iterationssætningen hurtigere sammenlignet med rekursiv funktion. Selv iterationsfunktionen har ikke overhead af gentagne funktionsopkald, hvilket også gør dens udførelse hurtigere end rekursiv funktion. Iterationen afsluttes, når kontrolbetingelsen bliver falsk. Manglen på kontroltilstand i iterationssætning kan resultere i en uendelig sløjfe, eller det kan forårsage en kompilationsfejl.

Lad os forstå iteration vedrørende ovenstående eksempel.

int factorial (int num) {int svar = 1; // har brug for initialisering, fordi det kan indeholde en affaldsværdi inden dens initialisering for (int t = 1; t> num; t ++) // iteration {answer = svar * (t); vende tilbage (svar); }}

I ovenstående kode returnerer funktionen faktoriet for nummeret ved hjælp af iterationssætning.

  1. Rekursion er, når en metode i et program gentagne gange kalder sig, mens iteration er, når et sæt instruktioner i et program gentagne gange udføres.
  2. En rekursiv metode indeholder sæt instruktioner, udsagn, der kalder sig selv, og en afslutningsbetingelse, hvorimod iterationssætninger indeholder initialisering, forøgelse, betingelse, sæt instruktioner i en løkke og en kontrolvariabel.
  3. En betinget erklæring beslutter afslutningen af ​​rekursion og kontrolvariabelens værdi afgør afslutningen af ​​iterationserklæringen.
  4. Hvis metoden ikke fører til afslutningsbetingelsen, går den ind i uendelig rekursion. På den anden side, hvis kontrolvariablen aldrig fører til afslutningsværdien, itereres udsagnet uendeligt.
  5. Uendelig rekursion kan føre til systemnedbrud, mens uendelig iteration bruger CPU-cyklusser.
  6. Rekursion anvendes altid til metode, mens iteration anvendes til sæt instruktioner.
  7. Variabler oprettet under rekursion gemmes på stak, mens iteration ikke kræver en stak.
  8. Rekursion forårsager overhead af gentagen funktionskald, mens iteration ikke har en funktion, der kalder overhead.
  9. På grund af funktionen er det hurtigere at udføre rekursion, mens udførelsen af ​​iteration er hurtigere.
  10. Rekursion reducerer størrelsen på koden, mens iterationer gør en kode længere.

Konklusion:

Den rekursive funktion er let at skrive, men de klarer sig ikke godt sammenlignet med iteration, hvorimod iterationen er svært at skrive, men deres ydeevne er god sammenlignet med rekursion.