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:

  1. a probléma kisebb példányokra oszlik, és nincs nyilvánvaló módja egy ciklus írásakor megoldani;
  2. 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?

  1. A rekurzióból való kilépéshez feltételnek kell lennie.
  2. 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.