Dallimi midis rekursionit dhe përsëritjes

Përmbajtje:

Dallimi midis rekursionit dhe përsëritjes
Dallimi midis rekursionit dhe përsëritjes

Video: Dallimi midis rekursionit dhe përsëritjes

Video: Dallimi midis rekursionit dhe përsëritjes
Video: Cili është dallimi midis xhindëve dhe shejtanëve? - Dr. Imam Ahmed Kalaja 2024, Korrik
Anonim

Diferenca kryesore – Rekursion kundër Përsëritjes

Rekursioni dhe Përsëritja mund të përdoren për të zgjidhur problemet e programimit. Qasja për zgjidhjen e problemit duke përdorur rekursionin ose përsëritjen varet nga mënyra e zgjidhjes së problemit. Dallimi kryesor midis rekursionit dhe përsëritjes është se rekursioni është një mekanizëm për të thirrur një funksion brenda të njëjtit funksion ndërsa përsëritja është të ekzekutojë një grup udhëzimesh në mënyrë të përsëritur derisa kushti i dhënë të jetë i vërtetë. Rekursioni dhe përsëritja janë teknika kryesore për zhvillimin e algoritmeve dhe ndërtimin e aplikacioneve softuerike.

Çfarë është Rekursioni?

Kur një funksion thërret veten brenda funksionit, ai njihet si Rekursion. Ekzistojnë dy lloje të rekursionit. Ato janë rekursion i fundëm dhe rekursion i pafund. Rekursioni i fundëm ka një kusht përfundimtar. Rekursioni i pafund nuk ka një kusht përfundimtar.

Rekursioni mund të shpjegohet duke përdorur programin për të llogaritur faktorët.

n!=n(n-1)!, nëse n>0

n!=1, nëse n=0;

Referojuni kodit të mëposhtëm për të llogaritur faktorialin e 3(3!=321).

intmain () {

vlera int=faktoriale (3);

printf("Faktorial është %d\n", vlera);

kthim 0;

}

infaktorial (intn) {

if(n==0) {

kthim 1;

}

tjetër {

kthim n faktorial(n-1);

}

}

Kur thërrisni faktorialin (3), ai funksion do të thërrasë faktorialin (2). Kur thirret faktoriali (2), ai funksion do të thërrasë faktorialin (1). Atëherë faktoriali (1) do të quajë faktorial (0). faktoriali (0) do të kthejë 1. Në programin e mësipërm, kushti n==0 në bllokun “if” është kushti bazë. Sipas Likewise, funksioni faktorial thirret vazhdimisht.

Funksionet rekursive janë të lidhura me pirgun. Në C, programi kryesor mund të ketë shumë funksione. Pra, main () është funksioni thirrës, dhe funksioni i cili thirret nga programi kryesor është funksioni i thirrur. Kur thirret funksioni, kontrolli i jepet funksionit të thirrur. Pas përfundimit të ekzekutimit të funksionit, kontrolli kthehet në main. Pastaj programi kryesor vazhdon. Pra, krijon një rekord aktivizimi ose një kornizë për të vazhduar ekzekutimin.

Dallimi midis rekursionit dhe përsëritjes
Dallimi midis rekursionit dhe përsëritjes
Dallimi midis rekursionit dhe përsëritjes
Dallimi midis rekursionit dhe përsëritjes

Figura 01: Rekursion

Në programin e mësipërm, kur thërret faktorialin (3) nga main, ai krijon një rekord aktivizimi në grupin e thirrjeve. Pastaj, korniza faktoriale (2) e pirgut krijohet në majë të pirgut dhe kështu me radhë. Regjistri i aktivizimit ruan informacione rreth variablave lokale etj. Sa herë që thirret funksioni, krijohet një grup i ri variablash lokalë në krye të stivit. Këto korniza të pirgjeve mund të ngadalësojnë shpejtësinë. Po kështu në rekursion, një funksion thërret veten. Kompleksiteti kohor për një funksion rekurziv gjendet me numrin e herë, funksioni quhet. Kompleksiteti kohor për një thirrje funksioni është O(1). Për n numrin e thirrjeve rekursive, kompleksiteti kohor është O(n).

Çfarë është Përsëritja?

Përsëritja është një bllok udhëzimesh që përsëritet vazhdimisht derisa kushti i dhënë të jetë i vërtetë. Përsëritja mund të arrihet duke përdorur "for loop", "do-while loop" ose "while loop". Sintaksa "for loop" është si më poshtë.

për (initalizim; kusht; modifiko) {

// deklarata;

}

Dallimi kryesor midis rekursionit dhe përsëritjes
Dallimi kryesor midis rekursionit dhe përsëritjes
Dallimi kryesor midis rekursionit dhe përsëritjes
Dallimi kryesor midis rekursionit dhe përsëritjes

Figura 02: "për diagramin e rrjedhës së ciklit"

Hapi i inicializimit ekzekutohet i pari. Ky hap është të deklarohen dhe inicializohen variablat e kontrollit të ciklit. Nëse kushti është i vërtetë, deklaratat brenda kllapave kaçurrelë ekzekutohen. Këto deklarata ekzekutohen derisa kushti të jetë i vërtetë. Nëse kushti është i rremë, kontrolli shkon në deklaratën tjetër pas "ciklit për". Pas ekzekutimit të deklaratave brenda ciklit, kontrolli shkon tek modifikimi i seksionit. Është për të përditësuar variablin e kontrollit të ciklit. Pastaj gjendja kontrollohet përsëri. Nëse kushti është i vërtetë, deklaratat brenda kllapave kaçurrelë do të ekzekutohen. Në këtë mënyrë përsëritet cikli "for".

Në "while loop", deklaratat brenda ciklit ekzekutohen derisa kushti të jetë i vërtetë.

ndërsa (kushti){

//deklarata

}

Në ciklin "do-while", gjendja kontrollohet në fund të ciklit. Pra, cikli ekzekutohet të paktën një herë.

bëj{

//deklarata

} ndërsa(kushti)

Programi për të gjetur faktorialin e 3 (3!) duke përdorur përsëritjen ("për ciklin") është si më poshtë.

int main(){

intn=3, faktorial=1;

inti;

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

faktorial=faktoriali;

}

printf("Faktorial është %d\n", faktorial);

kthim 0;

}

Cilat janë ngjashmëritë midis rekursionit dhe përsëritjes?

  • Të dyja janë teknika për të zgjidhur një problem.
  • Detyra mund të zgjidhet ose me rekursion ose përsëritje.

Cili është ndryshimi midis rekursionit dhe përsëritjes?

Rekursion vs Përsëritje

Rekursioni është një metodë për të thirrur një funksion brenda të njëjtit funksion. Përsëritja është një bllok udhëzimesh që përsëritet derisa kushti i dhënë të jetë i vërtetë.
Kompleksiteti i hapësirës
Kompleksiteti hapësinor i programeve rekursive është më i lartë se përsëritjet. Kompleksiteti i hapësirës është më i ulët në përsëritje.
Shpejtësia
Ekzekutimi i rekursionit është i ngadalshëm. Normalisht, përsëritja është më e shpejtë se rekursioni.
Gjendja
Nëse nuk ka kusht përfundimi, mund të ketë një rekursion të pafund. Nëse kushti nuk bëhet kurrë i rremë, do të jetë një përsëritje e pafundme.
Stack
Në rekursion, pirgu përdoret për të ruajtur variablat lokale kur thirret funksioni. Në një përsëritje, pirgu nuk përdoret.
Lexueshmëria e kodit
Një program rekurziv është më i lexueshëm. Programi përsëritës është më i vështirë për t'u lexuar sesa një program rekurziv.

Përmbledhje – Rekursion vs Përsëritje

Ky artikull diskutoi ndryshimin midis rekursionit dhe përsëritjes. Të dyja mund të përdoren për të zgjidhur problemet e programimit. Dallimi midis rekursionit dhe përsëritjes është se rekursioni është një mekanizëm për të thirrur një funksion brenda të njëjtit funksion dhe për ta përsëritur për të ekzekutuar një grup instruksionesh në mënyrë të përsëritur derisa kushti i dhënë të jetë i vërtetë. Nëse një problem mund të zgjidhet në formë rekursive, ai gjithashtu mund të zgjidhet duke përdorur përsëritje.

Shkarko versionin PDF të Recursion vs Iteration

Mund të shkarkoni versionin PDF të këtij artikulli dhe ta përdorni për qëllime jashtë linje sipas shënimit të citimit. Ju lutemi shkarkoni versionin PDF këtu Diferenca midis Rekursionit dhe Përsëritjes

Recommended: