Geek tričko zdarma Geek tričko zdarma
Tričko zdarma! Stačí před dobitím bodů použít kód TRIKO15. Více informací zde
Avatar
Pavel Kletečka:31.7.2018 18:51

Dobrý den,

mám asi 20 if v sobě a při spuštění mi systém hlasí že je něco špatně, přičemž tam není žádná chyba.

Zkusil jsem: Zkoušel jsem obejít více if tím, že některé z nich dám do metody a systém pak bude brát mou vyvolanou metodu jako kratší, ale nefunguje to i tak.

Chci docílit: Chci mít v sobě 20 if, protože potřebuju pro svou metodu aby daný prvek splňoval spoustu aspektů (a přes or a and v if to vyřešit nejde)

 
Odpovědět 31.7.2018 18:51
Avatar
Petr Čech
Redaktor
Avatar
Odpovídá na Pavel Kletečka
Petr Čech:31.7.2018 19:33

To, že máš 20 if by nemělo nijak vadit. Pravděpodobně se ti tam něco nějak cyklí nebo se volá rekurze.
Obecně se dá říct, že stack roste pokud se zavolá vnořená metoda - každé volání si musí na stacku uložit alespoň pár bytů + alokovat místo pro lokální proměnné.
Vzhledem k tomu, že se systém tváří tak, že máš k dispozici gigabajty na 32-bit a terabajty na 64-bit OS, prakticky nikdy stack nemůžeš naplnit, pokud se neděje něco hodně špatně - třeba nekonečná rekurze.
Také se můžeš podívat na dokumentaci té výjimky .

Zkusil jsem: Zkoušel jsem obejít více if tím, že některé z nich dám do metody a systém pak bude brát mou vyvolanou metodu jako kratší, ale nefunguje to i tak.

Díky důvodům výše uvedeným to stack overflow akorát zhorší.

TL;DR máš tam nekonečnou rekurzi

Nahoru Odpovědět  +1 31.7.2018 19:33
the cake is a lie
Avatar
Luboš Běhounek Satik
Autoredaktor
Avatar
Odpovídá na Petr Čech
Luboš Běhounek Satik:31.7.2018 20:25

Stack ma vetsinou defaultne jen 1MB, ty GB/TB a vic jsou na heapu.

Nahoru Odpovědět  +2 31.7.2018 20:25
https://www.facebook.com/peasantsandcastles/
Avatar
Odpovídá na Petr Čech
Pavel Kletečka:1.8.2018 10:13

Děkuji je to možné, protože jsem to kontroloval v noci a asi jsem se přehlídl. Už to funguje děkuju.

 
Nahoru Odpovědět 1.8.2018 10:13
Avatar
Odpovídá na Pavel Kletečka
Jan Procházka:3.8.2018 13:36

Co to máš za 20 vnořených ifů, že to nejde zpracovat boolovou algebrou na jednodušší strukturu? To tam máš 220 možností? O_o?

 
Nahoru Odpovědět 3.8.2018 13:36
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 5 zpráv z 5.