Miért rekurzió az iteráció felett?

Pontszám: 4,7/5 ( 22 szavazat )

A rekurzió olyan problémák megoldására szolgál, amelyek kisebb, ismétlődő problémákra bonthatók . Különösen jó olyan dolgokon dolgozni, amelyeknek sok lehetséges ága van, és túl bonyolultak az iteratív megközelítéshez. Egy jó példa erre a fájlrendszeren keresztüli keresés.

Miért előnyösebb a rekurzió az iterációval szemben?

Ha az időbonyolultság a fókuszpont, és a rekurzív hívások száma nagy lenne , akkor jobb az iteráció használata. Ha azonban az időbonyolultság nem probléma, és a kód rövidsége igen, akkor a rekurzió a helyes út. ... Ezért a rekurzió használata előnyös rövidebb kódban, de nagyobb időbonyolításban.

Miért gyorsabb a rekurzió, mint az iteráció?

A rekurzív függvény sokkal gyorsabban fut, mint az iteratív. Ennek az az oka, hogy az utóbbiban minden elemhez szükség van egy CALL-ra az st_push függvényre, majd egy másikra az st_pop függvényre . Az előbbi esetben minden csomóponthoz csak a rekurzív CALL tartozik. Ráadásul a változókhoz való hozzáférés a callstackben hihetetlenül gyors.

Mi az előnye a rekurziónak?

A rekurzió előnyei Egy rekurzív függvényhez csak az alapesetet és a rekurzív esetet kell meghatározni, így a kód egyszerűbb és rövidebb, mint egy iteratív kód . Egyes problémák eredendően rekurzívak, mint például a grafikon és a fa bejárása.

Miért használjuk a rekurziót?

A rekurzió olyan problémák megoldására szolgál, amelyek kisebb, ismétlődő problémákra bonthatók . Különösen jó olyan dolgokon dolgozni, amelyeknek sok lehetséges ága van, és túl bonyolultak az iteratív megközelítéshez. ... A fák és grafikonok egy másik alkalom, amikor a rekurzió a legjobb és legegyszerűbb módja a bejárásnak.

Programozási hurkok vs rekurzió – Computerphile

21 kapcsolódó kérdés található

Könnyebb a rekurzió, mint az iteráció?

A helyzet az, hogy a rekurzió ritkán a leghatékonyabb megközelítés a probléma megoldására, és az iteráció szinte mindig hatékonyabb . Ennek az az oka, hogy a rekurzív hívások általában több többletköltséggel járnak, mivel a hívási verem olyan erősen használatos a rekurzió során.

Rekurzív vagy iteratív gyorsabb?

A memoizáció kellemessé teszi a rekurziót, de úgy tűnik, az iteráció mindig gyorsabb . Bár a rekurzív módszerek lassabban futnak, néha kevesebb kódsort használnak, mint az iteráció, és sokak számára könnyebben érthetők. A rekurzív módszerek bizonyos konkrét feladatoknál is hasznosak, mint például a fastruktúrák bejárása.

A rekurzió rosszabb, mint az iteráció?

A verem karbantartásának többletköltsége miatt a rekurzió általában lassabb, mint az iteráció . A rekurzió több memóriát használ, mint az iteráció. A rekurzió kicsinyíti a kódot.

Mik a rekurzió hátrányai?

A rekurzió hátrányai
  • A rekurzív függvények általában lassabbak, mint a nem rekurzív függvények.
  • Sok memóriaterületre lehet szükség ahhoz, hogy a köztes eredményeket tárolja a rendszerveremekben.
  • Nehéz elemezni vagy megérteni a kódot.
  • Tér- és időbeli összetettség szempontjából nem hatékonyabb.

Átalakítható a rekurzív iterációvá?

Minden rekurzív függvény átalakítható iteratív függvényté , ha a rekurzív hívásokat iteratív vezérlőkonstrukciókkal helyettesítjük, és a hívásveremet szimuláljuk a program által kifejezetten kezelt veremmel.

Nehéz megtanulni a rekurziót?

A rekurzió nem nehéz , míg a rekurzív gondolkodás bizonyos esetekben zavaró lehet. A rekurzív algoritmus jelentős előnyökkel rendelkezik az azonos iteratív algoritmusokkal szemben, például kevesebb kódsort és csökkentett adatstruktúrákat használ.

A rekurzív lassú?

A rekurzió lassabb, és több memóriát fogyaszt, mivel megtöltheti a veremet. De van egy megkerülő megoldás, az úgynevezett tail-call optimalizálás, amely egy kicsit bonyolultabb kódot igényel (mivel a függvényhez egy másik paraméter szükséges), de hatékonyabb, mivel nem tölti ki a veremet.

A rekurzív függvény lassú?

A rekurzió lassú lehet . Valójában elég nehéz olyan rekurzív függvényt írni, ahol a sebesség és a memória kisebb, mint az ugyanazt a feladatot végrehajtó iteratív függvényé. A rekurzió lassúságának az az oka, hogy új verem keretet kell hozzárendelni.

Gyorsabb a farok rekurziója?

Mint egy ökölszabály; A tail-rekurzív függvények gyorsabbak, ha nem kell megfordítaniuk az eredményt a visszaadás előtt . Ez azért van, mert ez újabb iterációt igényel a teljes listán. A farok-rekurzív függvények általában gyorsabban redukálják a listákat, mint az első példánkban.

Miért ne használjunk rekurziót?

A rekurzió nem ingyenes, költséges a veremterület, és ez gyakran sokkal korlátozottabb erőforrás lehet, mint néhány másik. A veremkeretek felállítása és lebontása időköltséggel jár, bármennyire is kicsi. csak az egyetlen verem keretet fogja használni, és kevés más értékes értéket.

Mivel helyettesíthető a rekurzió?

Sok professzionális fejlesztő valószínűleg már tudja, hogyan cserélje le a rekurzív függvényeket, hogy elkerülje a verem-túlcsordulási problémákat előre, iteratív függvényre cserélve vagy verem (heap verem) és while-loop (rekurzív szimulációs funkció) használatával.

Mi a példa a rekurzióra?

A rekurzió klasszikus példája A rekurzív programozás klasszikus példája a faktoriális számításokat foglalja magában. Egy szám faktoriálisát úgy számítjuk ki, hogy ez a szám szorozza az alatta lévő összes számot 1-ig. Például a faktoriális(5) ugyanaz, mint az 5*4*3*2*1 , a faktoriális(3) pedig 3*2*1.

Mi az a rekurzív megoldás?

A rekurzív algoritmus egy olyan algoritmus, amely "kisebb (vagy egyszerűbb)" bemeneti értékekkel hívja meg magát , és amely az aktuális bemenet eredményét úgy kapja meg, hogy egyszerű műveleteket alkalmaz a kisebb (vagy egyszerűbb) bemenet visszaadott értékére.

Lassú a rekurzió Pythonban?

A Python rekurzív metódushívásai minden híváshoz új veremkeret-allokációt okoznak. Ha ehelyett ismételhet egy listát, akkor elkerüli ezt a kiosztást, és óriási sebességnövekedést fog látni. Az alábbi kód körülbelül 4-szer gyorsabban fut ciklusként, mint rekurzív módszerként.

A rekurzió jobb, mint a hurkok?

A rekurzió önmagában nem jobb vagy rosszabb, mint a hurkok – mindegyiknek megvannak az előnyei és hátrányai, és ezek még a programozási nyelvtől (és a megvalósítástól) is függnek. ... Egy megfelelően farokhívásra optimalizált rekurzív függvény többnyire egy iteratív ciklusnak felel meg a gépi kód szintjén.

A rekurzió használata rossz gyakorlat?

A rossz. A kötelező programozási nyelvekben a legtöbb esetben kerülni kell a rekurzív függvényeket (kérjük, ne gyűlölködjenek, hogy ez az esetek 100%-ában nem igaz). A rekurzív függvények kevésbé hatékonyak, mint iteratív társaik. Ezenkívül ki vannak téve a verem túlcsordulásából eredő veszélyeknek.

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

A Rekurzió és Iteráció koncepciója egy utasításkészlet ismételt végrehajtása. A legfontosabb különbség a rekurzió és az iteráció között az, hogy a rekurzió egy olyan folyamat, 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 addig, amíg az adott feltétel igaz .

Valóban szükségünk van rekurzióra?

A rekurzív gondolkodás nagyon fontos a programozásban . Segít az apró problémákat kisebbre bontani. A rekurzív megoldás gyakran könnyebben olvasható, mint az iteratív megoldás.

A Dijkstra rekurzív?

1. Az algoritmus leírása Dijkstra algoritmusa egy rekurzív algoritmus , amely minden szakaszban felállítja a látogatott csúcsok S halmazát.

Hogyan lehetek jó a rekurzióban?

De ami a legfontosabb, kezdje az egyszerű problémákkal. Szinte minden problémának van rekurzív megoldása. A matematikai feladatok nagyszerűek ahhoz, hogy megértsék. Minden alkalommal, amikor for ciklust vagy while ciklust lát, alakítsa át ezt az algoritmust rekurzióvá.