NOVINKA: Získej 40 hodin praktických dovedností s AI – ZDARMA ke každému akreditovanému kurzu!
Hledáme nové posily do ITnetwork týmu. Podívej se na volné pozice a přidej se do nejagilnější firmy na trhu - Více informací.

Diskuze – Rekurze

Zpět

Upozorňujeme, že diskuze pod našimi online kurzy jsou nemoderované a primárně slouží k získávání zpětné vazby pro budoucí vylepšení kurzů. Pro studenty našich rekvalifikačních kurzů nabízíme možnost přímého kontaktu s lektory a studijním referentem pro osobní konzultace a podporu v rámci jejich studia. Toto je exkluzivní služba, která zajišťuje kvalitní a cílenou pomoc v případě jakýchkoli dotazů nebo projektů.

Komentáře
Avatar
Kit
Tvůrce
Avatar
Kit:10.4.2013 16:42

Rekurze je skvělá například pro procházení adresářovým stromem nebo obecným stromem, který není příliš hluboký. Dá se elegantně použít např. na DOM.

Odpovědět
10.4.2013 16:42
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
Lukáš Hruda
Tvůrce
Avatar
Lukáš Hruda:10.4.2013 17:19

Nechci rejpat, ale nějak moc nechápu, co má dělat ta první metoda pro fibonacciho posloupnost, jelikož vrací číslo, ale fibonacciho posloupnost je řada čísel, tudíž by měla vracet pole nebo nějakou kolekci. Takhle akorát vyhodí stack overflow, pokud dosadíš cokoliv kromě 1, protože logicky n - 2 pro sudé n nebude nikdy 1. Tu druhou taky moc nechápu, ta jenom vždy vrátí 1.
Jenom pro zajímavost, ten faktoriál by se dal hodně zjednodušit:

public int faktorial(int n)
{
  return n == 1 ? 1 : faktorial(n - 1) * n;
}

Ale v tutoriálu by tohle samozřejmě bylo asi dost matoucí.

 
Odpovědět
10.4.2013 17:19
Avatar
Зайчик
Člen
Avatar
Odpovídá na Lukáš Hruda
Зайчик:10.4.2013 17:24

Já tu Fibonacciho posloupnost nevysvětluju. Ten kdo jí umí / chápe rozhodně bude vědět, že tam má přidat řádek navíc, aby to nevrátilo jednu hodnotu ale celou posloupnost. To je jen příklad jak se rekurze dá použít.

public int faktorial(int n)
{
  return n == 1 ? 1 : faktorial(n - 1) * n;
}

Hmm a nevím proč by to mělo být matoucí. '?' by se měl znát každopádně to mě nenapadlo. :[

Odpovědět
10.4.2013 17:24
Коммунизм для нашего будущего!
Avatar
Kit
Tvůrce
Avatar
Odpovídá na Lukáš Hruda
Kit:10.4.2013 17:28

Kolik tedy vyjde faktorial(0)?

Odpovědět
10.4.2013 17:28
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
Lukáš Hruda
Tvůrce
Avatar
Odpovídá na Зайчик
Lukáš Hruda:10.4.2013 17:32

Protože je to tutoriál, a v něm by se měli věci vysvětlovat na příkladech na kterých je daný problém jasně vidět. Vysvětlovat rekurzi na kódu na jeden řádek by asi nebylo úplně ideální. Proto jsem napsal: "jenom pro zajímavost".

 
Odpovědět
10.4.2013 17:32
Avatar
Lukáš Hruda
Tvůrce
Avatar
Odpovídá na Kit
Lukáš Hruda:10.4.2013 17:37

0! je 1... je tam chyba, v té podmínce by měla být 0 zahrnuta. Já jenom zjednodušil co je zde napsáno :) Stejně tak by měl být teoreticky ošetřen vstup na záporná čísla.

 
Odpovědět
10.4.2013 17:37
Avatar
Kit
Tvůrce
Avatar
Odpovídá na Lukáš Hruda
Kit:10.4.2013 17:58

Dávám podmínku n <= 1. Sice vyjde 1 i pro záporná čísla, ale obvykle to nevadí.

Odpovědět
10.4.2013 17:58
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
Lukáš Hruda
Tvůrce
Avatar
Odpovídá na Kit
Lukáš Hruda:10.4.2013 18:01

A hlavně když je ta metoda rekurzivní, byla by asi hloupost aby pokaždé ošetřovala, zda číslo není záporné. V tomhle případě by to mělo být asi ošetřeno ještě před předáním metodě.

 
Odpovědět
10.4.2013 18:01
Avatar
Kit
Tvůrce
Avatar
Odpovídá na Lukáš Hruda
Kit:10.4.2013 18:09

Hlavně je hloupost dělat faktoriál rekurzí.

Je jedno, jestli děláš test na rovnost jedné nebo na menší než jedna.

Odpovědět
10.4.2013 18:09
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
Odpovídá na Kit
Luboš Běhounek Satik:10.4.2013 18:16

To je jen ukázka na rekurzi.
Jakákoliv rekurze se dá přepsat na nerekurzivní verzi.

Odpovědět
10.4.2013 18:16
https://www.facebook.com/peasantsandcastles/
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 10 zpráv z 85.