Különbség a rekurzió és az iteráció között

Tartalomjegyzék:

Különbség a rekurzió és az iteráció között
Különbség a rekurzió és az iteráció között

Videó: Különbség a rekurzió és az iteráció között

Videó: Különbség a rekurzió és az iteráció között
Videó: Comparing Iterative and Recursive Factorial Functions 2024, Július
Anonim

Kulcskülönbség – Rekurzió vs iteráció

A rekurzió és az iteráció programozási problémák megoldására használható. A probléma rekurzióval vagy iterációval történő megoldásának megközelítése a probléma megoldásának módjától függ. A legfontosabb különbség a rekurzió és az iteráció között az, hogy a rekurzió egy olyan mechanizmus, amely egy függvényt hív meg ugyanazon a függvényen belül, míg az iteráció egy utasításkészletet hajt végre ismételten, amíg az adott feltétel igaz. A rekurzió és az iteráció az algoritmusok fejlesztésének és a szoftveralkalmazások készítésének fő technikái.

Mi az a rekurzió?

Amikor egy függvény meghívja magát a függvényen belül, azt Rekurziónak nevezik. A rekurziónak két típusa van. Ezek véges rekurzió és végtelen rekurzió. A véges rekurziónak van egy befejező feltétele. A végtelen rekurziónak nincs befejező feltétele.

A rekurzió magyarázható a faktoriális számítási programmal.

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

n!=1, ha n=0;

A 3(3!=321) faktoriális kiszámításához használja az alábbi kódot.

intmain () {

int érték=tényezős (3);

printf("A tényezõ %d\n", érték);

vissza 0;

}

intfactorial (intn) {

if(n==0) {

vissza 1;

}

egyéb {

return n faktoriális(n-1);

}

}

A faktoriális (3) meghívásakor ez a függvény a faktori alt (2) fogja hívni. A faktoriális (2) meghívásakor az a függvény hívja a faktori alt (1). Ekkor a faktoriális (1) a faktori alt (0) hívja. A faktoriális (0) 1-et ad vissza. A fenti programban az „if blokk” n==0 feltétele az alapfeltétel. A Hasonló szerint a faktoriális függvényt újra és újra meghívják.

A rekurzív függvények a veremhez kapcsolódnak. C nyelven a főprogramnak számos funkciója lehet. Tehát a main () a hívó függvény, a főprogram által meghívott függvény pedig a hívott függvény. A függvény meghívásakor a vezérlést a hívott függvény kapja meg. A funkció végrehajtása után a vezérlés visszakerül a főbe. Ezután a fő program folytatódik. Tehát létrehoz egy aktiválási rekordot vagy egy verem keretet a végrehajtás folytatásához.

Különbség a rekurzió és az iteráció között
Különbség a rekurzió és az iteráció között
Különbség a rekurzió és az iteráció között
Különbség a rekurzió és az iteráció között

01. ábra: Rekurzió

A fenti programban a faktoriális (3) főről történő hívásakor aktiválási rekordot hoz létre a hívási veremben. Ezután faktoriális (2) veremkeret jön létre a verem tetején, és így tovább. Az aktiválási rekord információkat tárol a helyi változókról stb. A függvény minden egyes meghívásakor egy új helyi változókészlet jön létre a verem tetején. Ezek a veremkockák lelassíthatják a sebességet. Ugyanígy a rekurzióban a függvény meghívja magát. A rekurzív függvény időbonyolultságát a függvény meghívásának száma alapján határozzuk meg. Egy függvényhívás időbonyolultsága O(1). N számú rekurzív hívás esetén az időbonyolultság O(n).

Mi az az iteráció?

Az iteráció utasítások blokkja, amely újra és újra ismétlődik, amíg a megadott feltétel igaz. Az iteráció a „for loop”, a „do-while loop” vagy a „while loop” használatával érhető el. A „for loop” szintaxis a következő.

for (inicializálás; feltétel; módosítás) {

// nyilatkozatok;

}

Főbb különbség a rekurzió és az iteráció között
Főbb különbség a rekurzió és az iteráció között
Főbb különbség a rekurzió és az iteráció között
Főbb különbség a rekurzió és az iteráció között

02. ábra: „hurok folyamatábra”

Az inicializálási lépés fut először. Ez a lépés a hurokvezérlő változók deklarálása és inicializálása. Ha a feltétel igaz, a kapcsos zárójelben lévő utasítások végrehajtásra kerülnek. Ezek az állítások addig futnak, amíg a feltétel igaz. Ha a feltétel hamis, a vezérlő a következő utasításra lép a „for ciklus” után. A cikluson belüli utasítások végrehajtása után a vezérlő a módosító szakaszra lép. Ez a hurokvezérlő változó frissítése. Ezután újra ellenőrzik az állapotot. Ha a feltétel igaz, a kapcsos zárójelben lévő utasítások végrehajtásra kerülnek. Így a „for ciklus” ismétlődik.

A „while ciklusban” a cikluson belüli utasítások addig futnak, amíg a feltétel igaz.

közben (feltétel){

//állítások

}

A „do-while” ciklusban a feltétel a ciklus végén kerül ellenőrzésre. Tehát a ciklus legalább egyszer végrehajtódik.

do{

//állítások

} while(feltétel)

A 3 (3!) faktoriális iterációval („for ciklus”) megkeresésére szolgáló program a következő.

int main(){

intn=3, faktoriális=1;

inti;

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

faktoriális=faktoriálisi;

}

printf(“A faktor %d\n”, faktoriális);

vissza 0;

}

Mi a hasonlóság a rekurzió és az iteráció között?

  • Mindkét technika egy probléma megoldására.
  • A feladat rekurzióval vagy iterációval is megoldható.

Mi a különbség a rekurzió és az iteráció között?

Rekurzió vs iteráció

A rekurzió egy függvény meghívásának módszere ugyanazon a függvényen belül. Az iteráció egy utasításblokk, amely addig ismétlődik, amíg a megadott feltétel igaz.
Térkomplexitás
A rekurzív programok térbeli összetettsége nagyobb, mint az iterációk. A tér összetettsége kisebb az iterációk során.
Sebesség
A rekurzió végrehajtása lassú. Általában az iteráció gyorsabb, mint a rekurzió.
Állapot
Ha nincs lezárási feltétel, akkor végtelen rekurzió lehet. Ha a feltétel soha nem válik hamissá, végtelen iteráció lesz.
Stack
Rekurzióban a verem a helyi változók tárolására szolgál a függvény meghívásakor. Az iteráció során a verem nem kerül felhasználásra.
Kód olvashatósága
A rekurzív program jobban olvasható. Az iteratív programot nehezebb olvasni, mint egy rekurzív programot.

Összegzés – Rekurzió vs iteráció

Ez a cikk a rekurzió és az iteráció közötti különbséget tárgy alta. Mindkettő használható programozási problémák megoldására. A rekurzió és az iteráció közötti különbség az, hogy a rekurzió egy olyan mechanizmus, amely ugyanazon a függvényen belül meghív egy függvényt, és iterálja azt, hogy ismételten végrehajtson egy utasításkészletet, amíg az adott feltétel igaz. Ha egy probléma megoldható rekurzív formában, akkor iterációkkal is megoldható.

A Recursion vs Iteration PDF verziójának letöltése

Letöltheti ennek a cikknek a PDF-verzióját, és offline célokra használhatja az idézet jegyzetének megfelelően. Kérjük, töltse le a PDF verziót innen: Különbség a rekurzió és az iteráció között

Ajánlott: