Verskil tussen rekursie en iterasie

INHOUDSOPGAWE:

Verskil tussen rekursie en iterasie
Verskil tussen rekursie en iterasie

Video: Verskil tussen rekursie en iterasie

Video: Verskil tussen rekursie en iterasie
Video: Comparing Iterative and Recursive Factorial Functions 2024, Julie
Anonim

Sleutelverskil – Rekursie vs Iterasie

Rekursie en Iterasie kan gebruik word om programmeringsprobleme op te los. Die benadering om die probleem op te los deur gebruik te maak van rekursie of iterasie hang af van die manier om die probleem op te los. Die belangrikste verskil tussen rekursie en iterasie is dat rekursie 'n meganisme is om 'n funksie binne dieselfde funksie te noem, terwyl iterasie is om 'n stel instruksies herhaaldelik uit te voer totdat die gegewe voorwaarde waar is. Rekursie en Iterasie is belangrike tegnieke vir die ontwikkeling van algoritmes en die bou van sagtewaretoepassings.

Wat is rekursie?

Wanneer 'n funksie homself binne die funksie noem, staan dit bekend as Rekursie. Daar is twee tipes rekursie. Hulle is eindige rekursie en oneindige rekursie. Eindige rekursie het 'n terminerende toestand. Oneindige rekursie het nie 'n beëindigende voorwaarde nie.

Rekursie kan verduidelik word deur die program te gebruik om faktoriale te bereken.

n!=n(n-1)!, indien n>0

n!=1, as n=0;

Verwys die onderstaande kode om faktoriaal van 3(3!=321) te bereken.

intmain () {

int waarde=faktoriaal (3);

printf(“Faktorial is %d\n”, waarde);

return 0;

}

intfaktoriaal (intn) {

if(n==0) {

return 1;

}

else {

return n faktoriaal(n-1);

}

}

Wanneer faktoriaal (3) genoem word, sal daardie funksie faktoriaal (2) oproep. Wanneer faktoriaal (2) genoem word, sal daardie funksie faktoriaal (1) oproep. Dan sal faktoriaal (1) faktoriaal (0) noem. faktoriaal (0) sal 1 terugstuur. In die bogenoemde program is n==0 toestand in die “as blok” die basisvoorwaarde. Volgens die Net so word die faktoriale funksie weer en weer opgeroep.

Rekursiewe funksies hou verband met die stapel. In C kan die hoofprogram baie funksies hê. Dus, hoof () is die oproepfunksie, en die funksie wat deur die hoofprogram aangeroep word, is die opgeroep funksie. Wanneer die funksie geroep word, word die beheer gegee aan die geroepe funksie. Nadat die funksie-uitvoering voltooi is, word die beheer na hoof teruggekeer. Dan gaan die hoofprogram voort. Dus, dit skep 'n aktiveringsrekord of 'n stapelraam om voort te gaan met uitvoering.

Verskil tussen rekursie en iterasie
Verskil tussen rekursie en iterasie
Verskil tussen rekursie en iterasie
Verskil tussen rekursie en iterasie

Figuur 01: Rekursie

In die bogenoemde program, wanneer faktoriaal (3) vanaf hoof geroep word, skep dit 'n aktiveringsrekord in die oproepstapel. Dan word faktoriale (2) stapelraam bo-op die stapel geskep, ensovoorts. Die aktiveringsrekord hou inligting oor plaaslike veranderlikes ens. Elke keer as die funksie opgeroep word, word 'n nuwe stel plaaslike veranderlikes bo-op die stapel geskep. Hierdie stapelrame kan die spoed vertraag. Net so in rekursie, noem 'n funksie homself. Tydkompleksiteit vir 'n rekursiewe funksie word gevind deur die aantal kere wat die funksie genoem word. Tydkompleksiteit vir een funksie-oproep is O(1). Vir n aantal rekursiewe oproepe is die tydskompleksiteit O(n).

Wat is iterasie?

Iterasie is 'n blok instruksies wat telkens herhaal totdat die gegewe voorwaarde waar is. Iterasie kan bereik word deur gebruik te maak van "vir lus", "doen-terwyl lus" of "terwyl lus". "vir lus"-sintaksis is soos volg.

vir (initialisasie; toestand; wysig) {

//-stellings;

}

Sleutelverskil tussen rekursie en iterasie
Sleutelverskil tussen rekursie en iterasie
Sleutelverskil tussen rekursie en iterasie
Sleutelverskil tussen rekursie en iterasie

Figuur 02: "vir lusvloeidiagram"

Inisialiseringstap word eerste uitgevoer. Hierdie stap is om lusbeheerveranderlikes te verklaar en te inisialiseer. As die voorwaarde waar is, word die stellings binne die krulhakies uitgevoer. Daardie stellings word uitgevoer totdat die toestand waar is. As die voorwaarde vals is, gaan die kontrole na die volgende stelling na die "vir lus". Nadat die stellings binne die lus uitgevoer is, gaan die kontrole na die wysigingsafdeling. Dit is om die lusbeheerveranderlike op te dateer. Dan word die toestand weer nagegaan. As die voorwaarde waar is, sal die stellings binne die krulhakies uitgevoer word. Op hierdie manier herhaal die "vir lus".

In "while lus", word die stellings binne die lus uitgevoer totdat die voorwaarde waar is.

while (toestand){

//statements

}

In “doen-terwyl”-lus word die toestand aan die einde van die lus nagegaan. Dus, die lus word ten minste een keer uitgevoer.

doen{

//statements

} terwyl(toestand)

Program om die faktoriaal van 3 (3!) te vind deur iterasie (“vir lus”) te gebruik, is soos volg.

int main(){

intn=3, faktoriaal=1;

inti;

for(i=1; i<=n; i++){

faktoriaal=faktoriaali;

}

printf(“Faktorial is %d\n”, faktoriaal);

return 0;

}

Wat is die ooreenkomste tussen rekursie en iterasie?

  • Albei is tegnieke om 'n probleem op te los.
  • Die taak kan óf in rekursie óf iterasie opgelos word.

Wat is die verskil tussen rekursie en iterasie?

Rekursie vs Iterasie

Rekursie is 'n metode om 'n funksie binne dieselfde funksie te roep. Iterasie is 'n blok instruksies wat herhaal totdat die gegewe voorwaarde waar is.
Space Complexity
Die ruimtekompleksiteit van rekursiewe programme is hoër as iterasies. Spasiekompleksiteit is laer in iterasies.
Speed
Rekursie-uitvoering is stadig. Normaalweg is iterasie vinniger as rekursie.
Condition
As daar geen beëindigingsvoorwaarde is nie, kan daar 'n oneindige rekursie wees. As die voorwaarde nooit vals word nie, sal dit 'n oneindige iterasie wees.
Stack
In rekursie word die stapel gebruik om plaaslike veranderlikes te stoor wanneer die funksie geroep word. In 'n iterasie word die stapel nie gebruik nie.
Kode leesbaarheid
'n Rekursiewe program is meer leesbaar. Die iteratiewe program is moeiliker om te lees as 'n rekursiewe program.

Opsomming – Rekursie vs Iterasie

Hierdie artikel het die verskil tussen rekursie en iterasie bespreek. Albei kan gebruik word om programmeringsprobleme op te los. Die verskil tussen rekursie en iterasie is dat rekursie 'n meganisme is om 'n funksie binne dieselfde funksie te noem en dit te herhaal om 'n stel instruksies herhaaldelik uit te voer totdat die gegewe voorwaarde waar is. As 'n probleem in rekursiewe vorm opgelos kan word, kan dit ook opgelos word deur iterasies.

Laai die PDF-weergawe van Recursion vs Iteration af

Jy kan die PDF-weergawe van hierdie artikel aflaai en dit vir vanlyn doeleindes gebruik soos per aanhalingsnota. Laai asseblief PDF-weergawe hier af Verskil tussen rekursie en iterasie

Aanbeveel: