关于阶乘的四个JAVA算法。
来源:互联网 发布:怎么隐藏域名信息 编辑:程序博客网 时间:2024/05/21 10:15
这里有四个关于计算阶乘的,难度依次提升,全部通过测试。
这应该是基本代码了,与之共勉。
这是利用简单的循环相乘制造的阶乘。
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(17));
}
}
这个是数组添加的方法制成的,可以计算更大的阶乘。
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) {
最后一个是利用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);
}
}
System.out.print(factorial(20));
}
}
其实方法还有很多,这里提供的也算是个框架形式。分享之。~
这应该是基本代码了,与之共勉。
这是利用简单的循环相乘制造的阶乘。
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(17));
}
}
这个是数组添加的方法制成的,可以计算更大的阶乘。
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) {
最后一个是利用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);
}
}
System.out.print(factorial(20));
}
}
其实方法还有很多,这里提供的也算是个框架形式。分享之。~
- 关于阶乘的四个JAVA算法。
- 关于阶乘的四个JAVA算法
- 关于N的阶乘(n!)的java算法实现
- 【转】Java编程实例:计算阶乘的四个例子
- Java编程实例:计算阶乘的四个例子
- Java编程实例:计算阶乘的四个例子
- Java关于阶乘和二进制“1”的个数的算法题
- 阶乘比较快速的算法 递归 Java
- java 素数算法, n的阶乘
- java 阶乘 递归算法
- java实现阶乘算法
- java阶乘算法
- Java 实现阶乘算法
- 关于在面试中有关阶乘的算法
- 关于阶乘的问题
- 关于阶乘的题目
- 阶乘的算法
- 大数阶乘的算法
- 当前流行的J2EE WEB应用架构分析(转)
- 深入理解C语言指针的奥秘
- 解金山公司面试题
- 用dreamweaver来做flash透明效果
- 查看完整版本: 使用C语言编写提取通用shellcode的程序
- 关于阶乘的四个JAVA算法。
- Enable ASP.NET in IIS
- 中国历史上的豪言壮语之魏晋南北朝篇
- 双操作系统安装教程(XP与2003 server)
- C中的不可写数据区
- 你还在用if else吗?
- 查看完整版本: weibo反弹后门的源代码
- 关于按日期查询
- C语言程序设计入门学习六步曲