NOVINKA: Získej 40 hodin praktických dovedností s AI – ZDARMA ke každému akreditovanému kurzu!
Funkce, kterou se snažíš použít je dostupná pouze pro registrované uživatele. Buďto se přihlas nebo si zdarma vytvoř nový účet.
Funkce, kterou se snažíš použít je dostupná pouze pro registrované uživatele. Buďto se přihlas nebo si zdarma vytvoř nový účet.

Diskuze – Lekce 18 - Funkce a výjimky v Pythonu

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
Milan Šmídl:30.12.2015 15:33

Zdar chlapy! jak postupuje pc pri ctení kodu té rekurze a jaké jsou instrukce pro aritmetickou jednotku? Nikde nevidim blok příkazu a když čtu instrukce jak jdou po sobe, tak se mi nikde neuzavře vypočet? funkce volá sama na sebe to sice ano, je tam (cislo -1), to ano ale jako argument funkce a ja proste nikde nevidim blok prikazu a jsem z toho už jantar:) jako vidim o co tady jde to ano, ale když jdu krok po kroku, tak jsem v pasti..kdyby mi toto dokázal někdo vysvětlit, tak opravdu veliký respekt

 
Odpovědět
30.12.2015 15:33
Avatar
Odpovídá na Milan Šmídl
Neaktivní uživatel:30.12.2015 16:12

Nejsem sice pythonar, jen c-like jazykar, ale zkusim to: zavolas faktorial(5) -> vleze se do funkce, vyhodnoti podminky, a zjisti se ze 5 je vetsi nez jedna, funkce se rozhodne vratit hodnotu, ktera je specifikovana jako navratova hodnota volani faktorial(4), coz vede k pozastaveni prvniho faktorialu a spusteni druheho, to vede k volani tretiho na cislo 3, ctvrteho na cislo 2 a posledniho pateho na cislo jedna, toto volani vrati jednicku, jednicka se tedy vynasobi se dvojkou o uroven vejs a vratej se, o dalsi uroven vejs se vynasobi se trojkou a vrati se o dalsi uroven vejs, tak dal az uplne nahoru. To co provadi pocitat se naziva rekurzivni volani, nebo proste rekurze, to co k tomu potrebuje je zasobnik, neco (pamet), najeky misto kde se to vsechno rozpracovany ulozi a zavola se dalsi, nizsi vrstva, ve sve podstate si to predstav jako pohadku o slepicce a kohoutkovi, (tenhe priklad se casto uvadi) slepicka sice potrebovala vodu pro toho hlupaka nenazranyho kohouta, ale aby dostala vodu musela nekomu kdo ma vodu prinest (nevimco treba drahe kameni) ale ten kdo mel drahe kameni chtel prinest (nevimco treba sportak) ale ten kdo prodaval sportaky tajne snil o (nevimcem treba o modelce z Milana) ale .... atd...slepicka nejdriv zjistila kerej ukol bude ten posledni, a kdyz se ji podarilo ho splnit, probublala se s vysledkama az uplne nahoru k trose vody. To je pointa, a taky, ze kdyby slepicka chodila nakupovat do coopu, nebo do jednoty, nemusela by tak jancit a vsem plnit zivotni sny. Vysvetleno? Pochopeno? :)

Odpovědět
30.12.2015 16:12
Neaktivní uživatelský účet
Avatar
Odpovídá na Neaktivní uživatel
Milan Šmídl:30.12.2015 18:35

Jasně jasně, suprový vyklad..no a jak teda vypada ten pametovy regist? V tomto pripade se nevraci aritmetická hodnota, ale funkce krát aritmetická hodnota...(v registru tedy bude f5,f4, f*3, f*2,...)no ale když by ta rekurze byla už definována přímo v jazyce Python tak by to fungovalo..musim si to jeste nakreslit:) každopadně moc pěkny vyklad a já ti za něj mockrát děkuji
Dam sem kod který jsem se snazil aplikovat při tvorbě jednoducheho fraktalu, vpodstatě dvě fu nkce volajici jedna na druhou a předavajicí si argumenty..pak mi Coells mistr pythonař poradil rekurzy a ja si vzpoměl, že to je to na co jsem se vyprdnul u funkci, tak jsem se musel vratit:)..měj se a ještě jednou diky

Editováno 30.12.2015 18:37
 
Odpovědět
30.12.2015 18:35
Avatar
hanpari
Člen
Avatar
Odpovídá na Milan Šmídl
hanpari:30.12.2015 20:35

Jednoduchou rekurzi si můžeš odkrokovat tady:

http://tinyurl.com/jefnb7c

 
Odpovědět
30.12.2015 20:35
Avatar
Odpovídá na Milan Šmídl
Neaktivní uživatel:30.12.2015 21:01

Nemas vubec za co.
Jinak, kdyz mas dve funkce, ktery na sebe volaji v kruhu, tak je to stale rekurze, jen neprima. Nic to ale nemeni na chovani. To co se ptas, jestli to chapu spravne, tak se ptas na to co se vlastne vraci, a ja se domnivam (pokud jsem pochopil vyklad naseho prednasejiciho spravne), ze je skutecne ciselna hodnota, prave proto, ze se to vsechno vyhodnoti postupne. Nejdriv se zjisti ze se bude vracet navratova hodnota funkce krat cislo...ale nevim jak v pythonu, v cecku treba se stadardne funkce nevraci, to by na tebe kompilator koukal jako na cvoka :D ... misto toho se prave na zasobniku tahle situace vyresi tak, ze se prvni funkce pozastavi DOKUD nebude ta druha (kterou JAKOBY vracis) mit pripravenou hodnotu a nebude ji vracet a takhle dal a dal a hloubs a hloubs. Zajima me, proc vlastne potrebujes znat vzhled pametoveho registru? Ne ze by mi to prislo zvlastni, ale zajima me to.

Odpovědět
30.12.2015 21:01
Neaktivní uživatelský účet
Avatar
Odpovídá na hanpari
Milan Šmídl:30.12.2015 23:11

Bože Hanpari prosimtě promiň já jsem ti dal zcela omylem palec dolů a těď to nejde vzít zpět, tak prosimtě to byl jen omyl, omlouvám se:) Každopádně ještě jednou díky chlapy

 
Odpovědět
30.12.2015 23:11
Avatar
Odpovídá na Neaktivní uživatel
Milan Šmídl:30.12.2015 23:16

Jsem technik a mám rád, když už se do něčeho pustím, když si vše dovedu představit co možná nejkomplexněji:) díky za výklad, opravdu si toho moc vážím..

 
Odpovědět
30.12.2015 23:16
Avatar
Odpovídá na Milan Šmídl
Neaktivní uživatel:30.12.2015 23:54

Tu komplexnost chapu, mam to podobne, v ten pripad si ale rikam, ze by pro tebe byly jazyky jako Assembler nebo C mnohem obraznejsi. Kdo nevidel pole a zejmena stringy v cecku jako by ani nemohl docenit tu krasu. :)

Jinak nemas vubec za co. Rekurze je moje oblibene tema, tak se k nemu vzdycky rad vyjadrim.

Odpovědět
30.12.2015 23:54
Neaktivní uživatelský účet
Avatar
Odpovídá na hanpari
Milan Šmídl:31.12.2015 8:08

Ta funkce visualize code execution je opravdu extremně užitečná...škoda jen, že nemám více času si s tím pohrát..díky za výborný tip

 
Odpovědět
31.12.2015 8:08
Avatar
Odpovídá na Neaktivní uživatel
Milan Šmídl:31.12.2015 8:21

Na assembler se vrhnu jakmile se budu cítit v pythonu jistější, každopádně to mám v plánu a už se na to těším a doufám, že při tom opráším i číslicovou techniku už se mi ty hradla, sčítačky, modula, multiplexory trošku vytratily z hlavy:)..Nemám ambice živit se jako prográmator, takže si to mohu dovolit:) hezký den..

 
Odpovědět
31.12.2015 8:21
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 118.