Melyek a rekurzív algoritmusok és a verem túlcsordulása a verem túlcsordulásánál orosz nyelven?
A @ Harry válasz mellett.
Rekurzió típusai
A rekurzív funkciók többféleképpen oszthatók meg:
- lineáris rekurzió. amelyben a rekurzív hívás bármelyik rekurzív szelet kezdeményezi nem több, mint egy további rekurzív hívások. (mint a például az @Harry)
- farok rekurzió (a lineáris rekurzió speciális esete), amelyben rekurzív függvényhívás történik működésének végén. (mint a @ Harry példájában).
- nemlineáris vagy párhuzamos rekurzió. amely rekurzív hívásokat indít minden rekurzív szeletre, egynél több rekurzív hívást indít.
Jó példa erre a Fibonacci sorozat n. Tagjának kiszámítására:
- kölcsönös vagy közvetett rekurzió. amelyben egy adott funkció rekurzív hívása más funkcióból származik, amelyet maga az adott függvényből hív.
Mikor kell rekurziót használni?
Rekurzió használata, ha:
- a probléma kisebb példányokra oszlik, és nincs nyilvánvaló módja egy ciklus írásakor megoldani;
- Egy rekurzív adatszerkezettel dolgozik, például összekapcsolt listákkal
De: Ha a feladat iteratív módon megoldható, akkor iterációt használjon.
Hogyan lehet elkerülni a túlcsordulást rekurzióval?
- A rekurzióból való kilépéshez feltételnek kell lennie.
- Ha az 1. szabály teljesül, de még mindig túlcsordul, akkor el kell hagynia a rekurzió használatát, és az algoritmust is iteratív módon kell végrehajtania. (ciklusok és dinamikus programozás, hogy segítsen)
Egy iteratív faktori példa:
Végül az elmélet jobb megértése a gyakorlatban való alkalmazásával érhető el.