Rekursijas Un Iterācijas Atšķirība

Satura rādītājs:

Rekursijas Un Iterācijas Atšķirība
Rekursijas Un Iterācijas Atšķirība

Video: Rekursijas Un Iterācijas Atšķirība

Video: Rekursijas Un Iterācijas Atšķirība
Video: Datu pārraide bezvadu sensoru tīklos. Lab2 papildinājums. 2024, Septembris
Anonim

Galvenā atšķirība - rekursija pret atkārtojumu

Rekursiju un atkārtojumu var izmantot, lai atrisinātu programmēšanas problēmas. Pieeja problēmas risināšanai, izmantojot rekursiju vai iterāciju, ir atkarīga no problēmas risināšanas veida. Galvenā atšķirība starp rekursiju un iterāciju ir tāda, ka rekursija ir mehānisms, lai izsauktu funkciju tajā pašā funkcijā, savukārt iterācija ir atkārtoti izpildīt instrukciju kopu, līdz dotais nosacījums ir patiess. Rekursija un iterācija ir galvenie paņēmieni algoritmu izstrādē un programmatūras lietojumu izveidē.

SATURS

1. Pārskats un galvenās atšķirības

2. Kas ir rekursija

3. Kas ir atkārtojums

4. Rekursijas un iterācijas līdzības

5. Blakus salīdzinājums - Rekursija vs atkārtojums tabulas veidā

6. Kopsavilkums

Kas ir rekursija?

Kad funkcija sevi izsauc funkcijas ietvaros, to sauc par Rekursiju. Ir divu veidu rekursija. Tie ir ierobežota rekursija un bezgalīga rekursija. Galīgai rekursijai ir beigu nosacījums. Bezgalīgai rekursijai nav beigu nosacījuma.

Rekursiju var izskaidrot, izmantojot programmu, lai aprēķinātu faktorialus.

n! = n * (n-1) !, ja n> 0

n! = 1, ja n = 0;

Skatiet zemāk redzamo kodu, lai aprēķinātu faktoriālo vērtību 3 (3! = 3 * 2 * 1).

intmain () {

int vērtība = faktoriāls (3);

printf (“Faktoriāls ir% d / n”, vērtība);

atgriešanās 0;

}

intaktuāls (intn) {

ja (n == 0) {

atgriezties 1;

}

cits {

atgriešanās n * faktoriāls (n-1);

}

}

Izsaucot faktoriālu (3), šī funkcija izsauks faktoriālo (2). Zvanot uz faktoriālo (2), šī funkcija izsauks faktoriālo (1). Tad faktoriāls (1) sauks faktoriālo (0). faktoriāls (0) atgriezīsies 1. Iepriekš minētajā programmā bāzes nosacījums ir “if block” nosacījums n == 0. Saskaņā ar Līdzīgi faktoriālo funkciju sauc atkal un atkal.

Rekursīvās funkcijas ir saistītas ar skursteni. C valodā galvenajai programmai var būt daudzas funkcijas. Tātad, main () ir izsaukšanas funkcija, un funkcija, kuru izsauc galvenā programma, ir tā sauktā funkcija. Kad funkcija tiek izsaukta, vadība tiek piešķirta izsauktajai funkcijai. Pēc funkcijas izpildes vadība tiek atgriezta galvenajā. Tad galvenā programma turpinās. Tātad, lai turpinātu izpildi, tiek izveidots aktivizācijas ieraksts vai kaudzes rāmis.

Rekursijas un iterācijas atšķirība
Rekursijas un iterācijas atšķirība

01. attēls: Rekursija

Iepriekš minētajā programmā, izsaucot faktoriālu (3) no galvenā, tas zvanu kaudzē izveido aktivizācijas ierakstu. Pēc tam tiek izveidots faktoriālais (2) kaudzes rāmis un tā tālāk. Aktivizācijas ieraksts glabā informāciju par lokālajiem mainīgajiem utt. Katru reizi, kad tiek izsaukta funkcija, kaudzes augšpusē tiek izveidota jauna lokālo mainīgo kopa. Šie kaudzes rāmji var palēnināt ātrumu. Tāpat rekursijā funkcija sevi sauc. Rekursīvās funkcijas laika sarežģītība tiek noteikta pēc reižu skaita, funkcija tiek izsaukta. Laika sarežģītība vienam funkcijas izsaukumam ir O (1). N rekursīvo zvanu skaitam laika sarežģītība ir O (n).

Kas ir atkārtojums?

Atkārtojums ir instrukciju bloks, kas atkārtojas atkal un atkal, līdz dotais nosacījums ir patiess. Atkārtojumu var panākt, izmantojot “for loop”, “do-while loop” vai “while loop”. “Cilpai” sintakse ir šāda.

par (inicializēšana; nosacījums; modificēt) {

// paziņojumi;

}

Galvenā atšķirība starp rekursiju un atkārtojumiem
Galvenā atšķirība starp rekursiju un atkārtojumiem

02. attēls: “cilpas plūsmas diagrammai”

Vispirms tiek veikts inicializācijas solis. Šis solis ir deklarēt un inicializēt cilpas vadības mainīgos. Ja nosacījums ir patiess, izpilda cirtaino lencīšu iekšienē esošos apgalvojumus. Šie paziņojumi tiek izpildīti, kamēr nosacījums ir patiess. Ja nosacījums ir nepatiess, vadīkla pāriet uz nākamo paziņojumu aiz “for loop”. Pēc paziņojumu izpildīšanas cilpa iekšpusē vadīkla pāriet uz sadaļas modificēšanu. Tas ir atjaunināt cilpas vadības mainīgo. Tad stāvoklis tiek pārbaudīts vēlreiz. Ja nosacījums ir patiess, tiks izpildīti paziņojumi cirtaino lencīšu iekšpusē. Tādā veidā atkārtojas “for loop”.

Sadaļā “while loop” paziņojumi cilpas iekšpusē tiek izpildīti, līdz nosacījums ir patiess.

while (nosacījums) {

//paziņojumi

}

Cilnē “do-while” stāvoklis tiek pārbaudīts cikla beigās. Tātad, cilpa tiek izpildīta vismaz vienu reizi.

darīt {

//paziņojumi

} while (nosacījums)

Programma, lai atrastu faktori no 3 (3!), Izmantojot iterāciju (“ciklam”), ir šāda.

int main () {

intn = 3, faktoriāls = 1;

inti;

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

faktoriāls = faktoriāls * i;

}

printf (“Faktoriāls ir% d / n”, faktoriāls);

atgriešanās 0;

}

Kādas ir rekursijas un atkārtojumu līdzības?

  • Abi ir paņēmieni problēmas risināšanai.
  • Uzdevumu var atrisināt vai nu rekursijā, vai atkārtojumā.

Kāda ir atšķirība starp rekursiju un atkārtojumiem?

Atšķirīgs raksts vidū pirms tabulas

Rekursija vs atkārtojums

Rekursija ir metode, kā izsaukt funkciju tajā pašā funkcijā. Atkārtojums ir instrukciju bloks, kas atkārtojas, līdz dotais nosacījums ir patiess.
Kosmosa sarežģītība
Rekursīvo programmu sarežģītība kosmosā ir augstāka nekā atkārtojumi. Kosmosa sarežģītība ir mazāka iterācijās.
Ātrums
Rekursijas izpilde ir lēna. Parasti iterācija notiek ātrāk nekā rekursija.
Stāvoklis
Ja nav pārtraukuma nosacījuma, var būt bezgalīga rekursija. Ja nosacījums nekad nekļūst nepatiess, tas būs bezgalīgs atkārtojums.
Kaudze
Rekursijā kaudze tiek izmantota vietējo mainīgo glabāšanai, kad tiek izsaukta funkcija. Atkārtojot, kaudze netiek izmantota.
Kodu lasāmība
Rekursīvā programma ir lasāmāka. Iteratīvo programmu ir grūtāk nolasīt nekā rekursīvo programmu.

Kopsavilkums - rekursija pret atkārtojumu

Šajā rakstā tika apspriesta rekursijas un atkārtojuma atšķirība. Abus var izmantot, lai atrisinātu programmēšanas problēmas. Atšķirība starp rekursiju un iterāciju ir tāda, ka rekursija ir mehānisms, kas izsauc funkciju tajā pašā funkcijā, un iterācija to izpilda instrukciju kopumu atkārtoti, līdz dotais nosacījums ir patiess. Ja problēmu var atrisināt rekursīvā formā, to var atrisināt arī, izmantojot atkārtojumus.

Lejupielādējiet rekursijas vs atkārtojuma PDF versiju

Jūs varat lejupielādēt šī raksta PDF versiju un izmantot to bezsaistes vajadzībām, kā norādīts piezīmē. Lūdzu, lejupielādējiet PDF versiju šeit Starpība starp rekursiju un atkārtojumiem

Ieteicams: