这里有四个关于计算阶乘的,难度依次提升,全部通过测试。 
  这应该是基本代码了,与之共勉。
  这是利用简单的循环相乘制造的阶乘。
 publicclassFactorial{   publicstaticintfactorial(intx){   if(x0){   thrownewIllegalArgumentException("xmustbe=0");   }   intfact=1;   for(inti=2;i=x;i++){   fact*=i;   }   returnfact;   }   publicstaticvoidmain(Stringargs[]){   System.out.print(factorial(10));   }   }
  这个是利用递归算法制成的。
 publicclassfactorial2{   publicstaticintfactorial2(intx){   if(x0){   thrownewIllegalArgumentException("xmustbe=0");   }   if(x=1){   return1;   }else   returnx*factorial2(x-1);   }   publicstaticvoidmain(Stringargs[]){   System.out.print(factorial2(10));   }   }
   这个是数组添加的方法制成的,可以计算更大的阶乘。
publicclassFactorial3{   staticlong[]table=newlong[21];   static{table[0]=1;}   staticintlast=0;   publicstaticlongfactorial(intx)throwsIllegalArgumentException{   if(x=table.length){   thrownewIllegalArgumentException("Overflow;xistoolarge.");   }   if(x=0){   thrownewIllegalArgumentException("xmustbenon-negative.");   }   while(lastx){   table[last+1]=table[last]*(last+1);   last++;   }   returntable[x];   }   publicstaticvoidmain(String[]args){   System.out.print(factorial(17));   }   }
  最后一个是利用BigInteger类制成的,这里可以用更大的更大的阶乘。
   
 importjava.math.BigInteger;   importjava.util.*;   publicclassFactorial4{   protectedstaticArrayListtable=newArrayList();   static{table.add(BigInteger.valueOf(1));}   publicstaticsynchronizedBigIntegerfactorial(intx){   for(intsize=table.size();size=x;size++){   BigIntegerlastfact=(BigInteger)table.
匹克淘宝旗舰店get(size-1);   BigIntegernextfact=lastfact.multiply(BigInteger.valueOf(size));   table.add(nextfact);   }   return(BigInteger)table.get(x);   }   publicstaticvoidmain(String[]args){   System.out.print(factorial(17));   }   }