뚠뚠멍의 생각들

Farokrekurzív optimalizálás (Tail Call Optimization)

  • Írás nyelve: Koreai
  • Országkód: Minden országcountry-flag
  • Informatika

Létrehozva: 2024-10-12

Létrehozva: 2024-10-12 18:47

Kódolási tesztek tanulmányozása közben, és egy szöveg animációs effektusainak hozzáadása közben

rekurzív függvény írásakor az AI segítségével megismerkedtem a TCO (Tail Call Optimization) fogalmával.


A farokrekurzió optimalizálás meggátolja a rekurzív hívásokból eredő verem túlcsordulást, és hatékonyabbá teszi a memória használatát.


A JavaScriptben az es6 szigorú mód támogatja, de úgy tűnik, még nem sok böngésző támogatja.


Általános rekurzió


Farokrekurzió


A függvény utolsó műveletének rekurzív függvényhívással való befejezését farokrekurziónak nevezzük.

Nincs szükség függvényverem keretre, így optimalizálja a memória használatát!


A JavaScriptben a farokrekurzió implementálásának módja a trambulin technika használata.

Ebben a módszerben a factorialTCO függvény nem közvetlenül adja vissza az eredményt, hanem egy függvényt.

A trampoline függvény folyamatosan futtatja ezeket a visszaadott függvényeket, hogy megkapja a végeredményt.


A funkcionális programozás egyik fő technikája, érdekes, hogy megoldja a hagyományos rekurzív függvények hátrányát (veremtúlcsordulás). Valójában csak a kód alapján nem könnyű megérteni, így ha elakadok, újra utánanézek.


Hozzászólások0