Atšķirība starp atkārtošanos un atkārtošanos

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

Programmēšanas problēmu risināšanai var izmantot rekursiju un atkārtošanu. Pieeja problēmas risināšanai, izmantojot rekursiju vai iterāciju, ir atkarīga no problēmas risināšanas veida. galvenā atšķirība starp atkārtošanos un atkārtošanos ir tā rekursija ir mehānisms, lai izsauktu funkciju tajā pašā funkcijā, kamēr iterācija ir atkārtot instrukciju kopumu, līdz dotais nosacījums ir taisnība. Rekursija un atkārtošana ir galvenās metodes algoritmu izstrādei un programmatūras pielietošanai.

SATURS

1. Pārskats un galvenās atšķirības
2. Kas ir rekursija
3. Kas ir atkārtošana
4. Rekursijas un atkārtojuma līdzības
5. Salīdzinājums blakus - rekursija vs atkārtošana tabulas formā
6. Kopsavilkums

Kas ir rekursija?

Kad funkcija sevi sauc par funkciju, to sauc par rekursiju. Ir divi rekursijas veidi. Tie ir ierobežota rekursija un bezgalīga rekursija. Ierobežota rekursija ir beigu stāvoklis. Bezgalīga atkārtošanās nav beigu nosacījuma.

Rekursiju var izskaidrot, izmantojot programmu koeficientu aprēķināšanai.

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

n! = 1, ja n = 0;

Lai aprēķinātu koeficientu 3 (3! = 3 * 2 * 1), izmantojiet zemāk redzamo kodu..

intmain ()

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

printf (“Faktors ir% d \ n”, vērtība);

atgriešanās 0;

intfaktoriāla (intn)

ja (n == 0)

atgriezties 1;

cits

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

Zvanot uz faktoriālo (3), šī funkcija izsauks faktoriālo (2). Zvanot uz faktoriālo (2), šī funkcija izsauks faktoriālo (1). Tad faktoriālais (1) izsauks koeficientu (0). koeficients (0) atgriezīsies 1. Iepriekš minētajā programmā n == 0 nosacījums “ja bloks” ir pamata nosacījums. Saskaņā ar Tāpat faktoriālo funkciju izsauc atkal un atkal.

Rekursīvās funkcijas ir saistītas ar steku. C daļā galvenajai programmai var būt daudz funkciju. Tātad, galvenā () ir izsaukšanas funkcija, un funkcija, kuru izsauc galvenā programma, ir izsauktā funkcija. Kad tiek izsaukta funkcija, vadība tiek piešķirta izsauktajai funkcijai. Pēc funkcijas izpildīšanas kontrole tiek atgriezta galvenajā. Pēc tam turpinās galvenā programma. Tātad, tas izveido aktivizācijas ierakstu vai steka rāmi, lai turpinātu izpildi.

01. attēls. Rekursija

Iepriekš minētajā programmā, izsaucot faktoriālu (3) no galvenā, tas izveido aktivizācijas ierakstu zvana kaudzē. Pēc tam kaudzes augšpusē tiek izveidots faktoriālais (2) kaudzes rāmis utt. Aktivizācijas ierakstā tiek glabāta informācija par vietējiem mainīgajiem utt. Katru reizi, kad tiek izsaukta funkcija, kaudzes augšpusē tiek izveidots jauns vietējo mainīgo kopums. Šie kaudze rāmji var palēnināt ātrumu. Līdzīgi kā rekursijā, funkcija sevi sauc. Laika sarežģītība rekursīvai funkcijai tiek atrasta pēc reižu skaita, funkcija tiek izsaukta. Laika sarežģītība vienas funkcijas izsaukumam ir O (1). N rekursīvo zvanu skaitam laika sarežģītība ir O (n).

Kas ir atkārtošana?

Iterācija ir instrukciju bloks, kas atkārtojas atkal un atkal, līdz dotais nosacījums ir izpildīts. Iterāciju var panākt, izmantojot “for loop”, “do-while loop” vai “while loop”. “Cilpas” sintakse ir šāda.

priekš (inicializācija; nosacījums; modificēt)

// paziņojumi;

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

Vispirms tiek izpildīts inicializācijas solis. Šis solis ir deklarēt un inicializēt cilpas kontroles mainīgos. Ja nosacījums ir taisnība, paziņojumi cirtainu lenču iekšpusē tiek izpildīti. Šie paziņojumi tiek izpildīti līdz nosacījums ir izpildīts. Ja nosacījums ir nepatiess, vadība pāriet pie nākamā paziņojuma aiz “par cilpu”. Pēc cilpas iekšienē esošo paziņojumu izpildes kontrole pāriet uz modifikācijas sadaļu. Tas ir atjaunināt cilpas vadības mainīgo. Pēc tam stāvokli vēlreiz pārbauda. Ja nosacījums ir taisnība, tiks izpildīti paziņojumi cirtainu lenču iekšpusē. Tādā veidā atkārtojas “par cilpu”.

“Kamēr cilpa”, cilpas iekšējie paziņojumi tiek izpildīti, līdz nosacījums ir taisnība.

kamēr (nosacījums)

//paziņojumi

“Darīšanas laikā” cilpā, stāvoklis tiek pārbaudīts cilpas galā. Tātad, cilpa vismaz vienu reizi tiek izpildīta.

darīt

//paziņojumi

kamēr (nosacījums)

Programma, lai atrastu koeficientu 3 (3!), Izmantojot iterāciju (“cilpai”), ir šāda.

int galvenā ()

intn = 3, koeficienta = 1;

inti;

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

faktoriālais = faktoriālais * i;

printf (“Faktoriālais ir% d \ n”, faktoriālais);

atgriešanās 0;

Kādas ir atkārtošanās un atkārtojuma līdzības?

  • Abas ir metodes problēmas risināšanai.
  • Uzdevumu var atrisināt vai nu rekursijā, vai iterācijā.

Kāda ir atšķirība starp atkārtošanos un atkārtošanos?

Rekursija vs atkārtošanās

Rekursija ir metode, kā izsaukt funkciju tajā pašā funkcijā. Iterācija ir instrukciju bloks, kas atkārtojas, līdz dotais nosacījums ir izpildīts.
Kosmosa sarežģītība
Rekursīvo programmu sarežģītība telpā ir augstāka nekā atkārtojumi. Kosmosa sarežģītība ir mazāka iterācijās.
Ātrums
Rekursijas izpilde notiek lēni. Parasti iterācija ir ātrāka nekā rekursija.
Stāvoklis
Ja nav izbeigšanas nosacījuma, var būt bezgalīga atkārtošanās. Ja stāvoklis nekad nekļūst nepatiess, tā būs bezgalīga iterācija.
Kaudze
Rekursijā kaudze tiek izmantota, lai saglabātu vietējos mainīgos, kad tiek izsaukta funkcija. Atkārtojumā steks netiek izmantots.
Kodu lasāmība
Rekursīvā programma ir lasāmāka. Atkārtoto programmu ir grūtāk lasīt nekā rekursīvo programmu.

Kopsavilkums - rekursija pret atkārtošanos

Šajā rakstā tika apskatīta atšķirība starp atkārtošanos un atkārtošanos. 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, lai izsauktu funkciju tajā pašā funkcijā un atkārtotu to, lai atkārtoti izpildītu instrukciju kopumu, līdz dotais nosacījums ir taisnība. Ja problēmu var atrisināt rekursīvā formā, to var arī atrisināt, izmantojot atkārtojumus.

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

Varat lejupielādēt šī raksta PDF versiju un izmantot to bezsaistes vajadzībām, kā norādīts citēšanas piezīmē. Lūdzu, lejupielādējiet šeit PDF versiju. Atšķirība starp rekursiju un atkārtošanos

Atsauce:

1.Punkts, konsultācijas. “Datu struktūras un algoritmu rekursijas pamati.”, Konsultāciju punkts, 2017. gada 15. augusts. Pieejams šeit 
2.nareshtechnologies. “Rekursija C funkcijās | C valodas apmācība ”YouTube, YouTube, 2016. gada 12. septembris. Pieejams šeit  
3.yusuf shakeel. “Rekursijas algoritms | Faktors - soli pa solim ”YouTube, YouTube, 2013. gada 14. oktobris. Pieejams šeit  

Attēla pieklājība:

1.'CPT-Recursion-Factorial-Code'By Pluke - Savs darbs, (Public Domain), izmantojot Commons Wikimedia 
2. 'For-loop-diagram'By Nav mašīnlasāmā autora. - Tiek pieņemts paša darbs. (CC BY-SA 2.5), izmantojot Commons Wikimedia