【转】Java编程实例:计算阶乘的四个例子
来源:互联网 发布:linux系统架构 编辑:程序博客网 时间:2024/05/21 22:36
这是利用简单的循环相乘制造的阶乘。
public class Factorial {
public static int factorial(int x) {
if (x < 0) {
throw new IllegalArgumentException("x must be>=0");
}
int fact = 1;
for (int i = 2; i <= x; i++) {
fact *= i;
}
return fact;
}
public static void main(String args[]) {
System.out.print(factorial(10));
}
}
这个是利用递归算法制成的。
public class factorial2 {
public static int factorial2(int x) {
if (x < 0) {
throw new IllegalArgumentException("x must be>=0");
}
if (x <= 1) {
return 1;
} else
return x * factorial2(x - 1);
}
public static void main(String args[]) {
System.out.print(factorial2(10));
}
}
这个是数组添加的方法制成的,可以计算更大的阶乘。
public class Factorial3 {
static long[] table = new long[21];
static {table[0] = 1; }
static int last = 0;
public static long factorial(int x) throws IllegalArgumentException {
if (x >= table.length) {
throw new IllegalArgumentException("Overflow; x is too large.");
}
if (x <= 0) {
throw new IllegalArgumentException("x must be non-negative.");
}
while (last < x) {
table[last + 1] = table[last] * (last + 1);
last++;
}
return table[x];
}
public static void main(String[] args) {
System.out.print(factorial(17));
}
}
最后一个是利用BigInteger类制成的,这里可以用更大的更大的阶乘。
import java.math.BigInteger;
import java.util.*;
public class Factorial4{
protected static ArrayList table = new ArrayList();
static{ table.add(BigInteger.valueOf(1));}
public static synchronized BigInteger factorial(int x){
for(int size=table.size();size<=x;size++){
BigInteger lastfact= (BigInteger)table.get(size-1);
BigInteger nextfact= lastfact.multiply(BigInteger.valueOf(size));
table.add(nextfact);
}
return (BigInteger) table.get(x);
}
public static void main(String[] args) {
System.out.print(factorial(17));
}
}
- 【转】Java编程实例:计算阶乘的四个例子
- Java编程实例:计算阶乘的四个例子
- Java编程实例:计算阶乘的四个例子
- java例子3:计算阶乘
- 关于阶乘的四个JAVA算法。
- 关于阶乘的四个JAVA算法
- 【java】计算N的阶乘
- java中四种阶乘的计算
- 编程计算一个正整数的阶乘
- Java中计算大数的阶乘
- 徐登沿的第十四个程序(利用静态变量计算n的阶乘)
- java阶乘计算
- Java计算阶乘
- Java阶乘计算
- 两个模板元编程求阶乘的例子
- java过滤器四个实例
- java过滤器四个实例
- 四个有害的java编程习惯
- 22个HTML5和CSS3工具,资源和指南
- 实战UI自动化开发,记录过程的点滴心得
- 北邮OJ上的题目——1549
- 房价要降吗?
- QQ聊天记录的保存位置
- 【转】Java编程实例:计算阶乘的四个例子
- 回调函数
- JavaScript中event属性和方法
- 剖析MFC的文档视图结构
- dcmtk与wxWidgets混合编程
- ASP.NET 2.0 绑定例解
- Farewell,Google
- >/dev/null 2>&1 解决烦人的标准输入
- 进程间通信_共享内存类_C++实现