Autor | Zpráva | ||
---|---|---|---|
František Hliva Profil |
#1 · Zasláno: 21. 12. 2010, 22:13:50
Čo je lepšie požívať cykly, alebo rekurzívne volanie funkcie? Čo je efektívnejšie ?
|
||
joe Profil |
#2 · Zasláno: 21. 12. 2010, 22:25:44
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 |
#3 · Zasláno: 21. 12. 2010, 22:35:13 · Upravil/a: Marek88
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 |
#4 · Zasláno: 21. 12. 2010, 22:36:25
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 |
#5 · Zasláno: 21. 12. 2010, 22:54:27
Marek88:
Všechno co je rekurzivně lze napsat i nerekurzivně. Možná to bude delší, a o dost, ale lze to. |
||
Marek88 Profil |
#6 · Zasláno: 21. 12. 2010, 23:16:45 · Upravil/a: Marek88
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 |
#7 · Zasláno: 21. 12. 2010, 23:22:24
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 * |
#8 · Zasláno: 22. 12. 2010, 07:55:11
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 :)
|
||
Časová prodleva: 13 let
|
0