RosettaCodeData/Task/Factorial/Jsish/factorial.jsish

23 lines
439 B
Plaintext

/* Factorial, in Jsish */
/* recursive */
function fact(n) { return ((n < 2) ? 1 : n * fact(n - 1)); }
/* iterative */
function factorial(n:number) {
if (n < 0) throw format("factorial undefined for negative values: %d", n);
var fac = 1;
while (n > 1) fac *= n--;
return fac;
}
if (Interp.conf('unitTest') > 0) {
;fact(18);
;fact(1);
;factorial(18);
;factorial(42);
try { factorial(-1); } catch (err) { puts(err); }
}