int 的范围有多大
-2的31次方到2的31次方减1,最大值就21亿多点
按100亿算吧
10000000000=100的5次方
那你知道199的阶乘有多大,远大于100的99次方
两个根本就不是一个数量级的

解决方案 »

  1.   

    你写的是不是阶乘?
    要知道long类型的范围是int个数的平方,但它只能容纳21!
    你用int算199的阶乘当然......double的范围较大,但是相对于int/long对于整数一一映射的优点,double显然精度太差了我曾经看到过一个用String的方法求大数的阶乘,绝对是个好创意!
      

  2.   

    import java.io.*;
    public class test
    {
    static double result=1;
    public double p(int n)
    {  if ((n==1)||(n==0))
      return 1;
      else
     {
         result=n*p(n-1);
         return result;
      }
    }
    public static void main(String args[])
    {
       test t=new test();
       System.out.println(t.p(199));
    }
    }
    没法求
    我想用String
    下次给程序
      

  3.   

    可以考虑用 java.math.BigInteger