Autor Zpráva
TomasJ
Profil
Zdravím, existuje v JS nějaká funkce Math objektu na faktoriál? Děkuji.
Sir Tom
Profil
TomasJ:
Také zdravím,

ne - jenom toto:

<script type="text/javascript">

function factorial(n) {
  if ((n == 0) || (n == 1))
    return 1;
   else {
      result = (n * factorial(n-1) );
      return result;
   }
}

</script>
Ochraň si to, že n musí být nezáporné číslo...
Martin02
Profil
Udělal jsem si to tedy v PHP, ne v JS, ale chtěl bych se zeptat: když udělám faktorial ze 17, vypíše mi to 3.55687428096E+14. Jde nějak udělat, aby s vypsalo celé číslo a ne to E+14?
Sice to už asi nepatří do této kapitoly, ale ještě se chci zeptat, když mi script píše Fatal error: Maximum function nesting level of '100' reached, aborting! in C:\Program Files\EasyPHP\www\factorial.php on line 12. Jistě to bude něco, že php nedokáže vykonat více než 100 funkcí najednou nebo tak něco. Jde toto nějak obejít? Třeba v nastavení php.ini nebo tak něco?
děkuji moc
Alphard
Profil
Uvědomujete si, jak rychle roste faktoriál? Integer nemůže obsahovat čísla 3.5e14 apod. V PHP by snad mohlo pomoci http://cz2.php.net/manual/en/intro.bc.php
Nox
Profil
Martin02:
Může, ale nemůže volat *rekurzivně* víc jak 100*. Případně bys mohl zagooglovat "memoization" ... zrovna faktoriál je u toho snad vždy jako vlajkový příklad

*) resp. tohle číslo jde určitě nastavit v php.ini, ale moc bych do toho zase nevrtal ... jestli fakt chceš nějaké velké výpočty, tak PHP stejně není moc vhodná volba

Vaše odpověď

Mohlo by se hodit

Neumíte-li správně určit příčinu chyby, vkládejte odkazy na živé ukázky.
Užíváte-li nějakou cizí knihovnu, ukažte odpovídajícím, kde jste ji vzali.

Užitečné odkazy:

Odkud se sem odkazuje


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: