2. vaje: FAKULTETA (09.03. - 16.03.)

1. naloga

Funkcija fakulteta(n) izračuna in vrne produkt prvih n naravnih števil:

n! = 1 * 2 * 3 * ...*(n-1)*n.

Za izračun fakultete si pogosto pomagamo s formulami za izračun približka po Stirlingovi formuli

\( n! \approx \sqrt{2 \pi n} (\frac{n}{e})^n \).

a) Napišite metodi long fakultetaL(n) in long stirlingL(n), ki izračunata fakulteto števila n, prva po definiciji, druga po Stirlingovi formuli (opomba: ker je vrednost Stirlingove formule realna, mora metoda stirlingL() vrniti zaokroženo vrednost; uporabite metodo Math.round()). Izračunajte in izpišite vrednosti obeh metod za prvih 20 vrednosti števila n ter izračunajte relativno napako Stirlingove formule. Izpis naj bo natanko tak, kot je prikazano v datoteki.

b) Ker vrednosti fakultete z večanjem števila n zelo hitro narašča, bo podatkovni tip long kmalu premajhen; ugotovite, do katere vrednosti n je ta tip še primeren za izračun vrednosti fakultete.

c) Napišite metodi fakultetaD() in stirlingD() tako, da bosta vračali rezultat tipa double (ustrezno spremenite kodo obeh že napisanih metod).

d) Za prvih 100 vrednosti števila n izpišite tabelo z vrednostmi obeh metod in relativno napako, kot je prikazano v datoteki. Kaj lahko rečete o relativni napaki Stirlingove formule?