`
在水伊方
  • 浏览: 107192 次
  • 性别: Icon_minigender_1
  • 来自: 福州
社区版块
存档分类
最新评论

Java中求阶乘的算法

    博客分类:
  • Java
阅读更多

Java中求阶乘的算法

1.一般算法:

public class Factorial {
	public static int factorial(int n) {
		if (n < 0 || n > 16) {
			System.err.println("n must be great than 0 and less than 17");
			return -1;
		} else if (n == 0) {
			return 1;
		} else {
			int result = 1;
			for (int i = 1; i <= n; i++) {
				result *= i;
			}
			return result;
		}
	}

	public static void main(String args[]) {
		System.out.println("result = " + factorial(5));
	}
} 

   运行结果:result = 120

 

2.递归算法:

public class Factorial {
	public static int recursion(int n) {
		if (n < 0 || n > 16) {
			System.err.println("n must be great than 0 and less than 17");
			return -1;
		} else if (n == 0) {
			return 1;
		} else {
			return n * recursion(n - 1);
		}
	}

	public static void main(String[] args) {
		System.out.println("result = " + recursion(16));
	}
}

 运行结果:result = 2004189184

 

3.使用BigInteger

import java.math.BigInteger;

public class Factorial {
	public static BigInteger bigInteger(int n) {
		BigInteger result = new BigInteger("1");
		if (n < 0) {
			System.err.println("n must be great than 0");
			return new BigInteger("-1");
		} else if (n == 0) {
			return new BigInteger("1");
		} else {
			for (int i = 1; i <= n; i++) {
				BigInteger num = new BigInteger(String.valueOf(i));
				result = result.multiply(num);
			}
			return result;
		}
	}

	public static void main(String[] args) {
		System.out.println("result = " + bigInteger(100));
	}
}

 运行结果:result = 93326215443944152681699238856266700490715968264381621468592963895

217599993229915608941463976156518286253697920827223758251185210916864000000000000000000000000

 

  

 

 

 

1
0
分享到:
评论
2 楼 clausewitzer 2011-10-28  
郭鹏恩 写道
第二种求n的阶乘好像不对啊,但是我找不到毛病出在哪了,12的阶乘能对,到了13就出错了,13的阶乘是6 227 020 800,而用这个程序则是1932053504,还望指教

好像是超出int型的最大范围(65536)了
1 楼 郭鹏恩 2011-10-22  
第二种求n的阶乘好像不对啊,但是我找不到毛病出在哪了,12的阶乘能对,到了13就出错了,13的阶乘是6 227 020 800,而用这个程序则是1932053504,还望指教

相关推荐

    [Java算法设计]-递归阶乘.java

    该资源提供了Java中递归阶乘的全面指南。文档中涵盖了递归阶乘的基本概念,包括如何使用递归计算阶乘以及如何在Java中实现递归阶乘。此外,文档还包括一个逐步指南,介绍如何在Java中实现递归阶乘的代码,包括详细的...

    [Java算法设计]-阶乘求和.java

    该资源提供了一份全面的指南,介绍了如何在Java中计算阶乘之和。文档中涵盖了阶乘的基本概念,包括如何计算阶乘以及如何计算阶乘之和并将其存储在变量中。此外,文档还包括一个逐步指南,介绍如何在Java中实现代码,...

    大数阶乘算法

    用java实现的大数阶乘的算法,理论上来说还有很多可以更新改进的地方。java自己的BigInteger0.031秒就完成了,本程序2.81秒完成。

    按照Java编码规范实现的阶乘算法

    Java编码规范可以有效提高代码可读性。逻辑清晰+符合规范 高效阶乘算法

    简单的java大数阶乘运算算法

    用java计算大数的阶乘,记得应该可以十秒内算出1000以内阶乘(时间很久了,大概是这样)。理论上是可以算无限大的数的阶乘的。可以作为程序设计实验课的作业。核心算法,没有赔UI。复制粘贴即可运行

    求大数的阶乘的算法(java)

    用java实现的求大数的阶乘 关键是用数组来存储计算结果

    Java阶乘求和计算范例.rar

    Java计算阶乘,并对结果进行求和计算,具体是求1 2! 3! ... 20!的和,数学好的朋友,或许很轻松就编写出代码了,这就是一个比较简单的Java求阶乘的代码例子,望参考。

    Java版超大整数阶乘算法代码详解-10,0000级

    主要介绍了Java版超大整数阶乘算法代码详解-10,0000级,具有一定借鉴价值,需要的朋友可以参考下

    Java算法之递归算法计算阶乘

    主要介绍了 Java递归算法计算阶乘,感兴趣的朋友可以参考下

    Java 递归法求5!阶乘相加之和.rar

    Java 采取递归方法求5!的阶乘,递归方法求阶乘之和,输入要阶乘的数字,递归公式:fn=fn_1*4! 具体来看以下代码:  System.out.print("输入要阶乘的数字:");  Scanner scanner = new Scanner(System.in);  int n ...

    递归算法(阶乘)

    相当于java 的一些算法,可能在面试的时候会需要的!!!

    Java数据结构和算法中文第二版

    Java数据结构和算法介绍了计算机编程中使用的数据结构和算法,对于在计算机应用中如何操作和管理数据以取得最优性能提供了深入浅出的讲解。全书共分为15章,分别讲述了基本概念、数组、简单排序、堆和队列、链表、...

    java笔试常见的算法题

    全排序、二分查找、冒泡排序、阶乘、最大公约数、最小公倍数、打印九九乘法表、判断素数、快速排序的递归实现和非递归实现、随机数、字符串操作、50人围成一圈,数到3和3的倍数的人出局,最后剩下的人是谁。...

    Java数据结构和算法中文第二版(1)

    Java数据结构和算法中文第二版(1) Java数据结构和算法中文第二版(2) 【内容简介】 本书可帮助读者: 通过由基于JAVA的演示所组成的可视专题讨论来掌握数据结构和算法 学会如何为常见和不太常见的编程条件选择...

    15个典型的递归算法的JAVA实现

    15个典型的递归算法的JAVA实现,求N的阶乘、欧几里德算法(求最大公约数)、斐波那契数列、汉诺塔问题、树的三种递归遍历方式、快速排序、折半查找、图的遍历、归并排序、八皇后问题(回溯、递归)、棋盘覆盖(分治,...

    [Java算法设计] - 排列组合.java

    该资源提供了Java中排列组合的全面指南。文档讲解了排列组合的基本概念,包括如何计算阶乘、如何生成排列和组合,以及如何将这些概念应用于解决实际问题。 此外,文档还提供了各种排列组合算法的详细代码示例和实现...

    阶乘与排列组合算法 各行各业都能用到

    阶乘与排列组合算法!在各行各业都能用得到的,比较彩票业,以及复杂的生产环境预测等软件开发

    java 模拟手工运算1000的阶乘

    包含模拟手工算大数相加、大数相乘(大数=越位的数)

    java数据结构与算法第二版

    Java中数组的基础知识 将程序划分成类 类接口 Ordered专题applet 有序数组的Java代码 对数 存储对象 大O表示法 为什么不用数组表示一切? 小结 问题 实验 编程作业 第3章 简单排序 如何排序? 冒泡排序...

    简化版遗传算法实例(可运行)c

    但是在大数据处理问题上有绝对的速度优势 假设数据量为n 对于运行次数 (不是时间复杂度)遍历算法可能是n的n次方或者 n的阶乘 动态规划至少也是n的三次方 遗传算法大概也就几百乘 n的平方 大数据通常是亿为单位的

Global site tag (gtag.js) - Google Analytics