Starpība starp rekursiju un svārstībām | Atšķirība Starp | lv.natapa.org

Starpība starp rekursiju un svārstībām




Galvenā atšķirība: Programmējot rekursiju var izskaidrot, ņemot vērā rekursīvo funkciju. Rekursīvā funkcija ir tāda, kas atkārtoti aicina atkārtot kodu. No otras puses, iterācija tiek sasniegta, izmantojot iteratīvu funkciju, kas atveido koda atkārtošanu.

Programmēšanā atkārtojumiem tiek izmantota rekursācija un iterācija. Tie attiecas uz procesu, kas tiek atkārtots vairākas reizes. Rekursija balstās uz pieeju, kurā kaut kas attiecas uz sevi, līdz nosacījums ir izpildīts. Tiek uzskatīts, ka metode ir rekursīva, ja tā var tieši vai netieši izsaukt sevi kā:

spēkā neesošs vārds ()

{

... vārds () ...

}

vai

spēkā neesošs vārds ()

{

... spēle () ...

}

spēkā neesoša spēle () {

... vārds () ...

}

Lai veiktu veiksmīgu rekursiju, ir jāpatur prātā, ka katram rekursijas procesā veiktam zvanam ir jāvienkāršo aprēķins. Rekursija tiek sasniegta, nosakot pamatgadījumu.

int faktors (int N)

{

ja (N == 0) atgriešanās 1;

cits atgriešanās (N * faktors (N-1));

}

Šajā piemērā rekursiju var viegli redzēt paziņojumā (N * faktors (N-1)), kur tā atkārtoti izsauc faktora funkciju. Rekursija ir ļoti noderīga, jo tā palīdz saīsināt kodu. Tomēr rekursija ir nedaudz lēna izpildījumā.

Iterācija ir balstīta uz cilpām. Šīs cilpas attiecas uz skaidriem iterācijas procesiem. Lai izpildītu cilpas prasības, tai ir jābūt kāda veida kritērijiem, kas pārtrauc turpmāku atkārtošanos. Tomēr, ja cilpas stāvokļa tests nekad nekļūst nepareizs, tad šajā stāvoklī bezgalīgas cilpas rašanās ir neizbēgama. Šajā piemērā faktori tiek noteikti, izmantojot iterācijas procesu -

funkciju faktori (n)

{

var cilpa, rezultāts;

rezultāts = 1;

par (cilpa = 1; cilpa <= n; cilpa ++)

{

rezultāts = rezultāts * cilpa;

}

atgriešanās rezultāts;

}

Šajā piemērā cilpošana tiek panākta, izmantojot veselus skaitļus no 1 līdz n, un cilpa <= n paziņojums tiek izmantots kā kritērijs, lai apturētu tālāku cilpošanu. Tādējādi varam secināt, ka tos pašus rezultātus var sasniegt, izmantojot rekursiju un iterāciju. Tomēr tās abas ir balstītas uz nedaudz atšķirīgām pieejām. Jebkuru rekursīvo algoritmu var rakstīt, izmantojot iterācijas (cilpas).

Recursion un Iteration salīdzinājums:

Rekursija

Iterācija

Definīcija

Rekursija attiecas uz rekursīvo funkciju, kurā tā vēlreiz aicina atkārtot kodu.

Iterācija tiek panākta, izmantojot iteratīvu funkciju, kas atveido koda atkārtošanu.

Svarīgs punkts

Ir jānosaka pamata gadījums

Ir jānosaka izbeigšanas nosacījums

Veiktspēja

Salīdzinoši lēns

Salīdzinoši ātri

Atmiņas lietošana

Salīdzinoši vairāk

Salīdzinoši mazāk

Kods

Mazāks

Ilgāks

Bezgalīga atkārtošanās

Bezgalīga rekursija spēj crashing sistēmu

Infinite looping atkārtoti izmanto CPU ciklus

Struktūra

Izvēle

Atkārtojums

Vietējie mainīgie

Nav nepieciešams

Nepieciešams

Iepriekšējais Raksts

Starpība starp Nokia Lumia 820 un Samsung Galaxy S3

Nākamais Raksts

Starpība starp Samsung Galaxy Tab 2 10.1 un Nexus 10