Autor | Zpráva | ||
---|---|---|---|
jirka3 Profil * |
#1 · Zasláno: 14. 2. 2015, 18:41:59
Ahoj, někde tady na fóru jsem si našel kód faktoriálu a lehce upravil, ale prostě ho za žádných okolností nemůžu rozběhat... Poradíte mi, co s tím?
<!doctype html> <html> <head> <meta http-equiv="content-type" content="text/html;charset=utf-8"> </head> <script> function faktorial(x) { if ((x == 0) || (x == 1)) return 1; else result = (x * faktorial(x-1) ); return result; } alert(x); } </script> <form> <input type="text" name="e"> <input type="submit" onClick="faktorial(this.form.e.value)"> </form> </html> |
||
lionel messi Profil |
jirka3:
Na riadok 10 doplň za podmienku znak { , čiže:
function faktorial(x) { if ((x == 0) || (x == 1)) return 1; else { result = (x * faktorial(x-1) ); return result; } alert(x); } Opravené po upozornení [#3] a radšej mažem študovať JS spolu s autorom. |
||
juriad Profil |
Máš tam hromadu chyb:
1) Závorka na 13. řádku - chybí jí otevírací na konci 10. řádku. 2) Alert se nikdy neprovede, protože vždy před ním bude return 3) Občas se ti stane, že se nikdy nezastaví (když uživatel zadá desetinné nebo záporné číslo) 4) Po stisknutí tlačítka se stránka refreshne 5) Umí to počítat jen malé faktoriály, používáš hloupý algoritmus. (I když presnost čísel v JS stejně lepší není, takže to tak nevadí.) lionel messi: To je chybná oprava I když kvůli return 1; to bude fungovat také, ale není to pěkné. (Závorka byla za ifem.)
|
||
jirka3 Profil * |
#4 · Zasláno: 14. 2. 2015, 19:25:48 · Upravil/a: jirka3
juriad:
Díky za odpověď: 1) opraveno 2) Jak se to dá teda jinak napsat? Jestli vůbec? 3) opraveno pomocí maxlength 4) S tím nevím, co dělat 5) nevadí jirka3: Já jsem vůl... 3) bod opraven pouze za předpokladu jednociferného faktoriálu .. Ach já dutá palice. |
||
juriad Profil |
jirka3:
Aha, doplnil jsi jen tu závorku. Není třeba ukazovat. Třeba takto: http://kod.djpw.cz/skkb 2) Dej alert mimo tu funkci. Protože volá sama sebe, nesmí být alert uvnitř - to by se volal v každém kroku. 3) Dej podmínku na menší nebo rovno 1. Co na tom, že bude vracet 1 i pro záporná čísla :-) 4) Nepoužívej input type="submit", ale input type="button"; nebo do onclick přidej na začátek return, nebo na konec onclick přidej ;false 5) Lepši je použít smyčku for. |
||
jirka3 Profil * |
#6 · Zasláno: 14. 2. 2015, 20:02:35 · Upravil/a: jirka3
juriad:
Díky moc, funguje skvěle. jirka3: Smyčkou for jsem to zkoušel, ale dostal jsem se do výsledku, kdy mi to vykreslilo u např. 5! 54321. A to jsem vzdal, protože nevím, jak to rozdělit na 5 proměnných... |
||
Časová prodleva: 9 let
|
0