23 lines
439 B
Plaintext
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); }
|
|
}
|