A rekuráció és az iteráció a programozási problémák megoldására használható. A probléma rekurzió vagy iteráció alkalmazásával történő megoldásának módja a probléma megoldásának módjától függ. Az kulcs különbség a rekurzió és az iteráció között ez az a rekurzió egy mechanizmus egy adott funkción belüli funkció meghívására, miközben az iteráció az utasítások sorozatának többszöri végrehajtása, amíg az adott feltétel valóban teljesül. A rekurzió és az iteráció az algoritmusok fejlesztésének és a szoftveralkalmazások fejlesztésének fő technikája.
1. Áttekintés és a legfontosabb különbség
2. Mi a rekurzió?
3. Mi az iteráció?
4. A rekurzió és az iteráció hasonlóságai
5. Összehasonlítás egymással - rekurzió vs iteráció táblázatos formában
6. Összegzés
Amikor egy funkció meghívja magát a funkción belül, akkor ezt rekurziónak nevezzük. Kétféle rekurzió létezik. Ezek véges rekurzió és végtelen rekurzió. Végtelen rekurzió van egy befejező feltétellel. Végtelen rekurzió nincs lezáró feltétele.
A rekurzió a tényezők kiszámításához a program segítségével magyarázható.
n! = n * (n-1)!, ha n> 0
n! = 1, ha n = 0;
A 3-as tényező kiszámításához használja az alsó kódot (3! = 3 * 2 * 1).
intmain ()
int érték = tényező (3);
printf („A tényező% d \ n”, érték);
visszatérés 0;
intfaktorialis (intn)
if (n == 0)
visszatérés 1;
más
visszatérés n * tényező (n-1);
A (3) faktorial hívásakor ez a funkció a (2) faktorial hívja. A (2) faktorial hívásakor ez a funkció az (1) faktorial hívja. Akkor az (1) faktorial (0) tényezőt hívja. a (0) tényező visszatér az 1. A fenti programban n == 0 feltétel az „if block” esetén az alapfeltétel. Hasonlóképpen: a faktorfüggvényt újra és újra meghívják.
A rekurzív funkciók a veremhez kapcsolódnak. C-ben a főprogramnak sok funkciója lehet. Tehát a main () a hívó függvény, és a funkció, amelyet a főprogram hív, a hívott függvény. Amikor a funkció meghívásra kerül, akkor a vezérlés megkapja a meghívott funkciót. Miután a funkció végrehajtása befejeződött, a vezérlés visszatér a főbe. Ezután a főprogram folytatódik. Tehát létrehoz egy aktivációs rekordot vagy veremkeretet a végrehajtás folytatásához.
01. ábra: rekurzió
A fenti programban, amikor a (3) tényezőt hívja a főtől, aktiválási rekordot hoz létre a hívásveremben. Ezután létrehozzuk a faktorial (2) veremkeretet a verem tetejére és így tovább. Az aktiválási rekord információkat tárol a helyi változókról stb. Minden alkalommal, amikor a funkciót meghívják, egy új helyi változók halmaza jön létre a verem tetején. Ezek a kötegkeretek lelassíthatják a sebességet. Hasonlóan a rekurzióhoz, egy függvény meghívja magát. Egy rekurzív függvény időbonyolultságát a hányszor találjuk meg, a függvényt meghívjuk. Egy függvényhívás időbonyolultsága O (1). N számú rekurzív hívás esetén az idő bonyolultsága O (n).
Az iteráció az utasítások blokkja, amely újra és újra megismétlődik, amíg az adott feltétel teljesül. Az iteráció a „for loop”, „do-while loop” vagy „while loop” használatával érhető el. A „hurok” szintaxisa a következő.
for (inicializálás; feltétel; módosítás)
// nyilatkozatok;
02 ábra: „hurokáramlási diagramhoz”
Az inicializálási lépést hajtja végre 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, akkor a göndör tartóban lévő állítások végrehajtódnak. Ezek a kijelentések mindaddig végrehajtódnak, amíg a feltétel nem teljesül. Ha a feltétel hamis, akkor a vezérlés a „for hurok” utáni következő állításra ugrik. A cikluson belüli utasítások végrehajtása után a vezérlés a módosító szakaszra megy. Frissíteni kell a hurokvezérlő változót. Ezután ismételten ellenőrzik az állapotot. Ha a feltétel igaz, akkor a göndör tartóban lévő állítások végrehajtódnak. Ily módon a „for loop” iterál.
A „míg a hurok” alatt, a hurokon belüli utasítások mindaddig végrehajtódnak, amíg a feltétel nem teljesül.
míg (feltétel)
// nyilatkozatok
A „do-while” hurokban, az állapotot a hurok végén ellenőrzik. Tehát a hurok legalább egyszer végrehajtódik.
do
// nyilatkozatok
míg (feltétel)
Az alábbiak szerint programozhatja meg a 3 (3!) Tényezőt iterációval („hurok”):.
int main ()
intn = 3, faktorial = 1;
INTI-;
for (i = 1; i<=n ; i++)
faktorial = faktorial * i;
printf („Faktorium% d \ n”, faktorialis);
visszatérés 0;
Rekurzió vs iteráció | |
A rekurzió egy olyan funkció hívása, amely ugyanazon a funkción belül működik. | Az iteráció az utasítások olyan blokkja, amely addig ismétlődik, amíg az adott feltétel nem teljesül. |
Hely komplexitása | |
A rekurzív programok térbonyolultsága nagyobb, mint az iterációk. | A tér bonyolultsága kisebb az iterációkban. |
Sebesség | |
A rekurzió végrehajtása lassú. | Általában az iteráció gyorsabb, mint a rekurzió. |
Feltétel | |
Ha nincs lezárási feltétel, akkor végtelen rekurzió fordulhat elő. | Ha a feltétel soha nem válik hamisnak, akkor végtelen iteráció lesz. |
Kazal | |
Rekurzióként a verem a helyi változók tárolására szolgál, amikor a függvényt meghívják. | Egy iterációban 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 egy rekurzív program. |
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 adott funkción belüli függvény meghívására és iterációjára szolgál, hogy egy utasításkészletet ismételten végrehajtson, amíg az adott feltétel valóra nem válik. Ha egy problémát rekurzív formában lehet megoldani, akkor iterációkkal is megoldható.
Letöltheti e cikk PDF verzióját, és offline célokra felhasználhatja, az idézet megjegyzésének megfelelően. Kérjük, töltse le itt a PDF verziót. A rekurzió és az iteráció különbsége
1.Point, oktatóanyagok. „Adatszerkezetek és algoritmusok rekurziós alapjai.”, Tutorials Point, 2017. augusztus 15. Itt érhető el
2.nareshtechnologies. “Rekurzió C funkcióban | C nyelvtanfolyam ”YouTube, YouTube, 2016. szeptember 12. Itt érhető el
3.yusuf shakeel. „Rekurziós algoritmus | Faktorialus - lépésről lépésre ”YouTube, YouTube, 2013. október 14. Itt érhető el
1.'CPT-rekurzió-tényező-kód'By Pluke - Saját munka, (Public Domain) a Commons Wikimedia-on keresztül
2. 'Hurok-diagram': Nincs géppel olvasható szerző - a saját munka feltételezése. (CC BY-SA 2.5) a Commons Wikimedia-on keresztül