请问高手如何才能表示出这个100的阶乘啊,好像long型都不够大啊,给我显个0放着啊public class DiGui {
       
       public static long jieCheng(long n){ if(n == 1){
return 1;
}
else{
return n*jieCheng(n-1);
}

}

public static void main(String[] args) {
DiGui d = new DiGui();
System.out.println(d.jieCheng(100));  

}}

解决方案 »

  1.   

    public class DiGui {
    public static BigInteger jieCheng(BigInteger n) { if (n.compareTo(new BigInteger("1")) == 0) {
    return new BigInteger("1");
    } else {
    return n.multiply(jieCheng(n.subtract(new BigInteger("1"))));
    } } public static void main(String[] args) {
    DiGui d = new DiGui();
    System.out.println(d.jieCheng(new BigInteger("100")));
    }
    }用一个BigInteger类就搞定啦
      

  2.   

    用循环的是这个样子的,BigInteger类果然够狠啊!import java.math.BigInteger;
    public class XunHuan { public static void main(String[] args) {

    BigInteger sum = BigInteger.valueOf(1);

    for (int i=1;i<=100;i++){
    sum = sum.multiply(BigInteger.valueOf(i)); 
    }
    System.out.println(sum);
    }}
      

  3.   

    这样求阶乘的效率太低了...我们刚学的算法是列表算出a[1]=10!  a[2]=20!/10!  a[3]=30!/20!  a[4]=40!/30!  a[5]=50!/40!  ……这样要求什么可以节约n多时间
      

  4.   


    参加ACM的时候再这么写...平常别这么写...挨老师批~ACM只要求time&mem