Autor Zpráva
František Hliva
Profil
Čo je lepšie požívať cykly, alebo rekurzívne volanie funkcie? Čo je efektívnejšie ?
joe
Profil
Pravděpodobně to vyjde na stejno v tom, na co se ptáš. Jediný rozdíl vidím v zápisu - rekurze je (skoro) vždy kratší a v pochopení je rekurze zase těžší... já se jí snažim vyhýbat.
Marek88
Profil
Záleží na použití. Někdy se bez rekurze neobejdeš (procházení adresářů a podadresářů) někdy je ale její použití nevhodné a používají se na to vždy cykly (např. procházení pole). Někdy rekurzí můžeš algoritmus udělat složitější - pro výpočet procesorem je pak potřeba mnohonásobně delší čas (např. výpočet fibonaciho řady).
Timy
Profil
Efektivnější bývá cyklus. Co se týče čitelnosti a přehlednosti, tak záleží spíš na problému. Při použití rekurze se pak vytváří nová prostředí, čehož se dá využívat.
joe
Profil
Marek88:
Všechno co je rekurzivně lze napsat i nerekurzivně. Možná to bude delší, a o dost, ale lze to.
Marek88
Profil
Tak mi prosím napiš script na nerekurzivní procházení všech adresářů s (teoreticky) nekonečnou hloubkou... Budeš tam mít něco jako

for(projít všechny položky){
if(je slozka){

   for(projít všechny položky){
   if(je slozka){

      for(projít všechny položky){
      if(je slozka){
         atd, atd, atd...

Ano jde to i takhle, ale je to tak špatné, že bych to klidně označil jako "bez rekurze se neobejdeš"...
Timy
Profil
Marek88:
Adresářová struktura je rozvětvený strom a strom lze projít i cyklem s tím, že si potomky ukládáš do fronty nebo do zásobníku (procházení do šířky nebo hloubky).
DoubleThink
Profil *
Nemyslím si, že by u stromových (nebo obecně u řekněme fraktálových) struktur byla rekurze nepřehlednější nebo těžší na pochopení. Právě možnost soustředit se na společný algoritmus a ignorovat okolní celek, dost šetří mozkové buňky programátora, už tak dost zničené kofeinem :)

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm:

0