Kulcskülönbség - Rekurzió vs iteráció
Rekurzió és iteráció használható a programozási problémák megoldására. 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 rekurzió és az iteráció közötti legfontosabb különbség az, hogy a rekurzió egy olyan mechanizmus, amely egy függvényt ugyanazon a függvényen belül hív meg, miközben az iteráció egy utasításkészlet ismételt végrehajtását jelenti, amíg az adott feltétel igaz. A rekurzió és az iteráció az algoritmusok fejlesztésének és a szoftveralkalmazások felépítésének fő technikája.
TARTALOM
1. Összefoglalás és Legfontosabb különbség
2. Mi rekurzió
3. Mi Iteration
4. hasonlóságok között rekurzió és iteráció
5. Egymás melletti összehasonlítás - rekurzió vs Iteration táblázatos formában
6. Összefoglalás
Mi az a rekurzió?
Amikor egy függvény behívja magát a függvényen belül, rekurziónak hívják. Kétféle rekurzió létezik. Ezek véges rekurzió és végtelen rekurzió. A véges rekurziónak végállapota van. A végtelen rekurziónak nincs befejező feltétele.
A rekurzió a program segítségével megmagyarázható a tényezők kiszámításához.
n! = n * (n-1) !, ha n> 0
n! = 1, ha n = 0;
A 3-as (3! = 3 * 2 * 1) tényező kiszámításához olvassa el az alacsonyabb kódot.
intmain () {
int érték = faktoriális (3);
printf („Faktoriális% d / n”, érték);
visszatér 0;
}
intaktorial (intn) {
ha (n == 0) {
visszatér 1;
}
más {
return n * faktoriális (n-1);
}
}
A faktoriális (3) meghívásakor ez a függvény a faktoriált (2). A faktoriális (2) meghívásakor ez a függvény faktoriális (1) -et fog hívni. Ekkor az (1) faktoriális (0) tényezőt fogja hívni. a faktoriális (0) értéke 1. A fenti programban az „if block” n == 0 feltétele az alapfeltétel. A Hasonlóképpen a faktoriális függvényt hívják újra és újra.
Rekurzív funkciók kapcsolódnak a veremhez. C-ben a fő programnak sok funkciója lehet. Tehát a main () a hívó függvény, és a fő program által meghívott függvény az úgynevezett függvény. A függvény meghívásakor a vezérlés megkapja a meghívott függvényt. A függvény végrehajtásának befejezése után a vezérlő visszatér a főbe. Ezután a főprogram folytatódik. Tehát létrehoz egy aktiválási rekordot vagy egy veremkeretet a végrehajtás folytatásához.
01. ábra: Rekurzió
A fenti programban, amikor a faktoriált (3) meghívja a main-ból, aktiválási rekordot hoz létre a hívásveremben. 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 készlete jön létre a verem tetején. Ezek a veremkeretek lassíthatják a sebességet. Ugyanígy a rekurzióban egy függvény hívja magát. A rekurzív függvény időbeli összetettségét az alkalmak száma határozza meg, a függvényt meghívják. Egy függvényhívás időbeli összetettsége O (1). N rekurzív hívás esetén az idő bonyolultsága O (n).
Mi az iteráció?
Az iteráció az utasítások blokkja, amely újra és újra megismétlődik, amíg az adott 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) {
// állítások;
}
02. ábra: „hurokábrához”
Először az inicializálás lép. Ez a lépés a ciklusvezérlő változók deklarálása és inicializálása. Ha a feltétel igaz, akkor a göndör zárójelben lévő utasítások végrehajtódnak. Ezek az állítások addig teljesülnek, amíg a feltétel igaz. Ha a feltétel hamis, akkor a vezérlő a „for ciklus” után a következő utasításra lép. A cikluson belüli utasítások végrehajtása után a vezérlő a szakasz módosítására megy. A hurokvezérlő változó frissítése. Ezután újra ellenőrizzük az állapotot. Ha a feltétel igaz, akkor a göndör zárójelben lévő utasítások végrehajtásra kerülnek. Így a „for loop” iterál.
A „while ciklusban” a ciklus belsejében lévő utasítások addig teljesülnek, amíg a feltétel igaz.
while (feltétel) {
// állítások
}
A „do-while” ciklusban a ciklus végén ellenőrizzük az állapotot. Tehát a ciklus legalább egyszer végrehajtódik.
csináld
// állítások
} while (feltétel)
Program a 3 (3!) Tényezőjének megkeresésére az iteráció („for loop”) használatával a következő.
int main () {
intn = 3, faktoriális = 1;
inti;
(i = 1; i <= n; i ++) {
faktoriális = faktoriális * i;
}
printf („Faktoriális% d / n”, faktoriális);
visszatér 0;
}
Milyen hasonlóságok vannak a rekurzió és az iteráció között?
- Mindkettő technika a probléma megoldására.
- A feladat megoldható rekurzióban vagy iterációban.
Mi a különbség a rekurzió és az iteráció között?
Különböző cikk a táblázat előtt
Rekurzió vs iteráció |
|
A rekurzió egy funkció meghívása ugyanazon függvényen belül. | Az iteráció az utasítások blokkja, amely addig ismétlődik, amíg az adott feltétel igaz. |
Tér komplexitás | |
A rekurzív programok térbeli összetettsége nagyobb, mint az iterációk. | A tér bonyolultsága kisebb az iterációkban. |
Sebesség | |
A rekurzió végrehajtása lassú. | Normális esetben az iteráció gyorsabb, mint a rekurzió. |
Feltétel | |
Ha nincs felmondási feltétel, végtelen rekurzió lehet. | Ha az állapot soha nem válik hamissá, akkor ez végtelen ismétlés lesz. |
Kazal | |
Rekurzióban a verem a helyi változók tárolására szolgál, amikor a függvény meghívásra kerül. | Egy iteráció során a verem nem kerül felhasználásra. |
Kód olvashatóság | |
A rekurzív program olvashatóbb. | Az iteratív program nehezebben olvasható, mint a rekurzív program. |
Összegzés - Rekurzió vs iteráció
Ez a cikk a rekurzió és az iteráció közötti különbséget tárgyalta. Mindkettő felhasználható a 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 egy függvényt ugyanazon a függvényen belül meghív, és az iterációt egy utasításkészlet ismételt végrehajtására hajtja végre, amíg az adott feltétel igaz. Ha egy probléma rekurzív formában megoldható, akkor iterációk segítségével is megoldható.
Töltse le a Rekurzió vs Iteráció PDF-verzióját
A cikk PDF-verzióját letöltheti, és offline célokra is használhatja, az idézési megjegyzés szerint. Kérjük, töltse le itt a PDF-verziót. Különbség a rekurzió és az iteráció között