From 5fa3e8b25c2ce4703730afe46be9c69ab3145f05 Mon Sep 17 00:00:00 2001 From: BigTire Date: Tue, 21 Feb 2023 15:37:06 +0100 Subject: [PATCH] =?UTF-8?q?Dopln=C4=9Bn=C3=AD=20pozn=C3=A1mek=20z=20p?= =?UTF-8?q?=C5=99edn=C3=A1=C5=A1ky=2002.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- KIV PPA2/02_prednaska.md | 29 ++++++++++++++++++++++++++++- 1 file changed, 28 insertions(+), 1 deletion(-) diff --git a/KIV PPA2/02_prednaska.md b/KIV PPA2/02_prednaska.md index 07f3995..068273b 100644 --- a/KIV PPA2/02_prednaska.md +++ b/KIV PPA2/02_prednaska.md @@ -38,4 +38,31 @@ - referenci na potomka je možné kdykoli přetypovat na referenci na předka - přetypovává se **reference**, nikoli instance samotná - obráceně ne (runtime error) => předek nemusí implementovat vše co potomek - - každou referenci je možné přetypovat na referenci na ```Object``` \ No newline at end of file + - každou referenci je možné přetypovat na referenci na ```Object``` + +## Polymorfismus +- instanci potomka lze použít všude kde se očekává předek + - parametr metody + - pole předků + - ... + +# Rekurzivní programy +- programy, které volají sami sebe +- rekurze, musí někdy skončit! + +## Přímá rekurze +- metoda volá přímo sebe sama +- je vidět na první pohled + +## Nepřímá rekurze +- ```a``` volá ```b```, ```b``` volá ```a``` + +## Problémy rekurze +- problémy s hloubkou zásobníku + - spíše programátorská chyba => přetečení zásobníku + - pro mnoho praktických problémů je rekurze dostatečná + - Java umožňuje nastavit velikost zásobníku +- často lze zapsat do nerekurzní formy + - nerekurzivní => často rychlejší + - zrychlení se projeví, pokud je samotný vykonávaný kód triviální + - někdy je přepsání poměrně složité \ No newline at end of file