Quote Originally Posted by tamilselvan
You need to use IBM Mainframe and FORTRAN to calculate FAC(100).

Tamil
For example.

Code:
CREATE OR REPLACE FUNCTION fac ( n NUMBER )
   RETURN NUMBER
IS
BEGIN
   IF n = 0
   THEN
      RETURN 1;
   ELSIF n = 1
   THEN
      RETURN 1;
   ELSE
      RETURN n * fac ( n - 1 );
   END IF;
END fac;
/

SELECT TO_CHAR(fac( 9), '999,999,999') factor_9,
       TO_CHAR(fac(10), '999,999,999') factor_10,
       TO_CHAR(fac(10) - fac(9), 
		                  '999,999,999') factor_diff,
       TO_CHAR(fac(30), '999,999,999,999,999,999,999,999,999,999,999') factor_30
  FROM dual;

FACTOR_9     FACTOR_10    FACTOR_DIFF  FACTOR_30
------------ ------------ ------------ --------------------------------------------
     362,880    3,628,800    3,265,920  265,252,859,812,191,058,636,308,480,000,000
You can see that the result grows exponentially. Is this a homework assignment???