Board logo

标题: JAVA编程实例:计算阶乘的四个例子 [打印本页]

作者: qingqing3721    时间: 2011-9-1 21:01     标题: JAVA编程实例:计算阶乘的四个例子

这里有四个关于计算阶乘的,难度依次提升,全部通过测试。
  这应该是基本代码了,与之共勉。
  这是利用简单的循环相乘制造的阶乘。




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));   }   }




欢迎光临 编程开发论坛 (http://bbs.lihuasoft.net/) Powered by Discuz! 6.0.0