Java编程实例:计算阶乘的四个例子
2010-12-24 11:28
411 查看
Java编程实例:计算阶乘的四个例子
这是利用简单的循环相乘制造的阶乘。
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));
}
}
这是利用简单的循环相乘制造的阶乘。
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面向接口编程实例
- 通过生活中例子模拟java面向接口编程实例
- java例子3:计算阶乘
- 关于Java的RMI编程的一个简单的例子
- 并发编程学习总结(一) :java 创建线程的三种方式的优缺点和实例(转载自:http://blog.csdn.net/u011784767/article/details/51315007)
- 【java计算问题】 1到10的阶乘,1+3+5+……+97+99的和
- 几个Java编程的典型例子
- Java经典算法四十例编程详解+程序实例
- ABAP--一个极好的调用外部java程序的Search Help Exit的实例(RFC好例子)
- PAT 基础编程题目集 4-8简单阶乘计算
- Java\Scala\Python三种语言求解经典编程实例(四)—— 求10000以内的自守数
- Java网路编程____TCP协议客户端服务器信息交互例子
- 蓝桥-基础练习30-阶乘计算-java代码
- java scoket 编程实例
- 编程计算一个正整数的阶乘
- 【Java编程】编写一个计算N个整数平均值的程序
- 网络131第2周实验——运行Java程序、计算圆的面积、Java编程提高班问卷调查