A rekurziót mindig helyettesíthetjük iterációval?

Pontszám: 4,4/5 ( 37 szavazat )

A rekurzió és az iteráció egyformán kifejező: a rekurzió helyettesíthető egy explicit hívásverem iterációjával, míg az iteráció helyettesíthető farokrekurzióval.

Mindig lehetséges a rekurzió iterációval való helyettesítése?

18 válasz. Mindig át lehet alakítani egy rekurzív függvényt iteratívvá? Igen, feltétlenül , és a Church-Turing-tézis bizonyítja, ha az emlékezet nem csal. Laikus kifejezéssel azt állítja, hogy ami rekurzív függvényekkel kiszámítható, az egy iteratív modellel (például a Turing-géppel) is kiszámítható, és fordítva.

A rekurzió mindig jobb, 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.

A rekurzió és az iteráció felcserélhető?

A különbség közöttük az, hogy a rekurzió egyszerűen egy metódushívás , amelyben a meghívott metódus megegyezik a hívást kezdeményezővel, míg az iteráció az, amikor egy hurkot ismételten végrehajtják, amíg egy bizonyos feltétel nem teljesül. ...

Minden iteratív függvény lehet rekurzív?

Igen , minden rekurzív módon megoldható probléma megoldható iteráció segítségével is. Ha nem tudja, az iteráció egy ciklusos konstrukció, például while ciklus, for ciklus stb. használata egy probléma megoldására, míg a rekurzió egy olyan függvény használata, amely meghívja magát egy probléma megoldására.

Programozási hurkok vs rekurzió – Computerphile

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

Mi a gyorsabb rekurzió vagy 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.

Mit használhatok rekurzió helyett?

Cserélje ki a rekurziót az iterációval .... Mechanika
  • Határozza meg a rekurzió alapesetét. Az alapeset elérésekor a rekurzió véget ér. ...
  • Valósítson meg egy ciklust, amely addig ismétlődik, amíg el nem éri az alapesetet.
  • Haladjon az alapeset felé. A rekurzív metódus helyett küldje el az új argumentumokat a ciklus tetejére.

Milyen előnyei vannak a rekurziónak az iterációval szemben?

  • A rekurzió csökkentheti az idő bonyolultságát. ...
  • A rekurzió áttekinthetőbbé teszi, és csökkenti a kódíráshoz és hibakereséshez szükséges időt. ...
  • A rekurzió jobb a fa bejárásánál. ...
  • A rekurzió lassú lehet. ...
  • Iteráció: A függvény addig ismétel egy meghatározott folyamatot, amíg egy feltétel meghiúsul.

Miért drágább a rekurzió, mint az iteráció?

C, Python, Ruby), a rekurzió általában drágább, mint az iteráció , mert tekercselést igényel, vagy új verem kereteket kell a 2. verembe helyezni minden alkalommal, amikor egy rekurzív függvényt meghívnak – ezek a műveletek időt és veremterületet foglalnak el , ami verem túlcsordulásnak nevezett hibához vezethet, ha a verem keretei fogyasztanak...

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.

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.

Mikor használjuk a rekurziót?

Mikor használjam 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. Egy jó példa erre a fájlrendszeren keresztüli keresés.

Hogyan lehet megállítani a rekurziót?

Egyértelmű, hogy a rekurzív függvényt akár break,goto és return függvényekkel is lezárhatjuk. @komputergeek • 2008. december 3. A break és a goto a ciklus lezárására szolgál. végtelen hurok??? Ha nem ad meg semmilyen befejező utasítást, az végtelen ciklust fog képezni.

Minden rekurzív algoritmus írható iteratívan?

Igen , kódolhat rekurzív függvényeket iterációként.

A rekurzív algoritmusoknak lehetnek ciklusai?

Minden iteratív ciklus rekurzív függvényekké alakítható . Azonban nem MINDEN rekurzív függvény lehet iteratív ciklus, vagy legalábbis NAGYON összetettek. Az egyszerű alkalmazásokban nem talál rekurziót. Azonban különösen hasznosak lehetnek a matematikai programozásban, keresési algoritmusokban és fordítókban.

Miért használunk rekurziót ciklusok helyett?

Az iteratív ciklusoknak nem kell a hívásveremre hagyatkozniuk az összes adatuk tárolásához, ami azt jelenti, hogy amikor az adatok megnövekednek, nem fenyegeti azonnal a verem túlcsordulás kockázatát . A rekurzív függvények igen. ... Ezzel szemben az iteratív megvalósítással, amely egy ciklust vesz igénybe (0-tól n-ig), így a futási idő O(n).

Mi az előnye a rekurziónak?

A rekurzió áttekinthetőbbé teszi, és (néha) lecsökkenti a kód írásához és hibakereséséhez szükséges időt (de nem feltétlenül csökkenti a helyigényt vagy a végrehajtás sebességét). Csökkenti az idő bonyolultságát. Jobban teljesít a fastruktúrákon alapuló problémák megoldásában.

Mi történik, ha az alapfeltétel nincs megadva a rekurzióban?

Ha a rekurzióban nincs megadva alapfeltétel, a függvény végtelenül hívja magát, ami veremtúlcsordulási kivételhez vezet (Olyan helyzet, amikor egy program lefoglalt területe teljesen kimerül a függvényhívások miatt). Ez egy faktoriális rekurzív megvalósítása.

Mi a példa a rekurzióra?

A rekurzió egy probléma (vagy egy probléma megoldásának) önmagában (egyszerűbb változata) történő meghatározásának folyamata. Például a „ találj haza ” műveletet a következőképpen definiálhatjuk: Ha otthon van, hagyja abba a mozgást. Tegyen egy lépést hazafelé.

Miért olyan nehéz a rekurzió?

A rekurzió jól ismert hátrányai azonban a magas memóriahasználat és a lassú futási idő, mivel függvényhívás veremeket használ. Továbbá minden rekurzív megoldás konvertálható azonos iteratív megoldássá a verem adatstruktúra segítségével, és fordítva.

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.

Melyek a rekurzió alkalmazásai?

A rekurziónak sok-sok alkalmazása van. Ebben a modulban látni fogjuk, hogyan lehet rekurziót használni a faktoriális függvény kiszámítására, annak meghatározására, hogy egy szó palindrom-e, hogyan számíthatunk ki egy szám hatványait, hogyan rajzolhatunk fraktál típust, és hogyan lehet megoldani az ősi Hanoi tornyai problémát. .

Miért tart ilyen sokáig a rekurzió?

ahol minden n+1 szám hívása a sorozatban megduplázza a program által futtatott függvényhívások számát . Ezért a rekurzív függvény hívásainak száma körülbelül 2^n, vagyis exponenciális bonyolultság.

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.