Skillnaden mellan rekursion och itteration

Författare: Laura McKinney
Skapelsedatum: 1 April 2021
Uppdatera Datum: 23 April 2024
Anonim
difference between recursion and iteration
Video: difference between recursion and iteration

Innehåll


Rekursion och iteration kör båda upprepade gånger instruktionsuppsättningen. Rekursion är när ett uttalande i en funktion kallar sig upprepade gånger. Iterationen är när en loop upprepade gånger körs tills kontrollvillkoret blir falskt. Den primära skillnaden mellan rekursion och iteration är att det är en rekursion är en process som alltid tillämpas på en funktion. De iteration tillämpas på uppsättningen instruktioner som vi vill utföra upprepade gånger.

  1. Jämförelsediagram
  2. Definition
  3. Viktiga skillnader
  4. Slutsats

Jämförelsediagram

Grund för jämförelseRekursionIteration
GrundläggandeUttalandet i ett organ med funktion kallar själva funktionen.Tillåter att uppsättningen av instruktioner körs upprepade gånger.
FormateraI rekursiv funktion anges endast avslutningsvillkor (basfall).Iteration inkluderar initialisering, villkor, exekvering av uttalande inom loop och uppdatering (steg och minskningar) av kontrollvariabeln.
UppsägningEtt villkorligt uttalande ingår i funktionen för att tvinga funktionen att återvända utan att rekursionssamtal utförs.Iterationsuttalandet körs upprepade gånger tills ett visst villkor har uppnåtts.
SkickOm funktionen inte konvergerar till något tillstånd som kallas (basfall) leder det till oändlig rekursion.Om kontrollvillkoret i iterationsförklaringen aldrig blir falskt, leder det till oändlig iteration.
Oändlig upprepningOändlig rekursion kan krascha systemet.Infinite loop använder CPU-cykler upprepade gånger.
AppliceradRekursion tillämpas alltid på funktioner.Iteration tillämpas på iterationsförklaringar eller "slingor".
StackBunten används för att lagra uppsättningen av nya lokala variabler och parametrar varje gång funktionen anropas.Använder inte stack.
Över huvudetRekursion har omkostnaderna för upprepade funktionssamtal.Inget omkostnad för upprepat funktionssamtal.
FartLångsamt i körning.Snabbt i körning.
Kodens storlekRekursion minskar storleken på koden.Iteration gör koden längre.


Definition av rekursion

C ++ tillåter en funktion att ringa sig själv inom sin kod. Det betyder att definitionen av funktionen har ett funktionskall till sig själv. Ibland kallas det också "cirkulär definition”. Uppsättningen av lokala variabler och parametrar som används av funktionen skapas nyligen varje gång funktionen ringer sig och lagras längst upp i bunten. Men varje gång en funktion kallar sig skapar den inte en ny kopia av den funktionen. Den rekursiva funktionen minskar inte storleken på koden och förbättrar inte ens minnesanvändningen, men den gör en del jämfört med iterationen.

För att avsluta rekursionen måste du inkludera ett valt uttalande i definitionen av funktionen för att tvinga funktionen att återvända utan att ge ett rekursivt samtal till sig själv. Avsaknaden av utvalda uttalanden i definitionen av en rekursiv funktion låter funktionen i oändlig rekursion en gång anropas.


Låt oss förstå rekursion med en funktion som kommer att returnera siffran.

int factorial (int num) {int svar; if (num == 1) {return 1; } annars {answer = factorial (num-1) * num; // rekursiv samtal} återvända (svar); }

I koden ovan visar uttalandet i annan del rekursionen, eftersom uttalandet kallar funktionen factorial () där den ligger.

Definition av Iteration

Iteration är en process för att utföra instruktionsuppsättningen upprepade gånger tills villkoret i iterationsförklaringen blir falskt. Iterationsuttalandet inkluderar initialisering, jämförelse, exekvering av uttalanden i iterationssatsen och slutligen uppdateringen av kontrollvariabeln. Efter att kontrollvariabeln har uppdaterats jämförs den igen, och processen upprepas, tills villkoret i iterationssatset visar sig vara falskt. Iterationssatserna är ”för” -slinga, ”medan” -slingan, ”gör-medan-slingan”.

Iterationssatsen använder inte en stack för att lagra variablerna. Därför är exekveringen av iterationssatsen snabbare jämfört med rekursiv funktion. Till och med iterationsfunktionen har inte utgifterna för upprepade funktionssamtal som också gör dess körning snabbare än rekursiv funktion. Iterationen avslutas när kontrollvillkoret blir falskt. Avsaknaden av kontrollförhållanden i iterationsuppgift kan leda till en oändlig slinga, eller det kan orsaka ett kompileringsfel.

Låt oss förstå iteration angående exemplet ovan.

int factorial (int num) {int svar = 1; // behöver initieras eftersom det kan innehålla ett soporvärde innan dess initialisering för (int t = 1; t> num; t ++) // iteration {svar = svar * (t); återvända (svar); }}

I ovanstående kod returnerar funktionen faktorn för numret med iterationssats.

  1. Rekursion är när en metod i ett program upprepade gånger kallar sig, medan iteration är när en uppsättning instruktioner i ett program upprepade gånger körs.
  2. En rekursiv metod innehåller uppsättningar av instruktioner, uttalande som kallar sig själv och ett avslutningsvillkor medan iterationssatser innehåller initialisering, inkrement, villkor, uppsättning instruktioner i en slinga och en kontrollvariabel.
  3. Ett villkorligt uttalande avgör avslutningen av rekursion och kontrollvariabelns värde bestämmer uppsägningen av iterationsförklaringen.
  4. Om metoden inte leder till uppsägningstillståndet går den in i oändlig rekursion. Å andra sidan, om kontrollvariabeln aldrig leder till avslutningsvärdet, itereras uttalandet oändligt.
  5. Oändlig rekursion kan leda till systemkrasch medan oändlig iteration förbrukar CPU-cykler.
  6. Rekursion tillämpas alltid på metod medan iteration tillämpas på uppsättningen av instruktioner.
  7. Variabler som skapats under rekursion lagras i stacken medan iteration inte kräver en stack.
  8. Rekursion orsakar omkostnaden för upprepad funktionssamtal medan iteration inte har en funktion som ringer omkostnader.
  9. På grund av funktionen är det snabbare att utföra rekursion, medan genomförandet av iterationen är snabbare.
  10. Rekursion minskar storleken på koden medan iterationer gör en kod längre.

Slutsats:

Den rekursiva funktionen är lätt att skriva, men de fungerar inte bra jämfört med iteration, medan iterationen är svår att skriva men deras prestanda är bra jämfört med rekursionen.