FileDocCategorySizeDatePackage
Factorial3.javaAPI DocExample1758Sat Jan 24 10:44:24 GMT 2004je3.basics

Factorial3

public class Factorial3 extends Object
This class computes factorials and caches the results in a table for reuse. 20! is as high as we can go using the long data type, so check the argument passed and "throw an exception" if it is too big or too small.

Fields Summary
static long[]
table
static int
last
Constructors Summary
Methods Summary
public static longfactorial(int x)


           
        // Check if x is too big or too small.  Throw an exception if so.
        if (x >= table.length)   // ".length" returns length of any array
            throw new IllegalArgumentException("Overflow; x is too large.");
        if (x<0) throw new IllegalArgumentException("x must be non-negative.");

        // Compute and cache any values that are not yet cached.
        while(last < x) {
            table[last + 1] = table[last] * (last + 1);
            last++;
        }
        // Now return the cached factorial of x.
        return table[x];