`
在水伊方
  • 浏览: 111005 次
  • 性别: 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递归实现阶乘计算,并以1到10的数字为例进行演示。 阶乘是一个数学概念,表示一个正整数n的所有小于等于n的正整数的乘积,通常表示为n!。例如,5的阶乘(5!)是5 × 4 × ...

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

    在编程领域,大数阶乘运算是一项挑战性的任务,特别是在Java这种不支持任意精度整数的语言环境中。然而,Java通过`BigInteger`类提供了处理大数的功能。本篇将深入探讨如何利用Java实现大数阶乘的计算,以及背后的...

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

    在Java中实现阶乘算法,我们可以使用递归或循环两种方法。这里我们遵循Java编码规范,使用循环来实现: ```java public class Factorial { // 1. 命名规范:类名首字母大写,驼峰命名 public static long ...

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

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

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

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

    大数阶乘算法

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

    用java实现10000的阶乘(2种方法)

    在Java中,计算10000的阶乘需要利用`BigInteger`类处理大整数,并选择适合的算法策略。递归方法虽然直观,但在处理大数时效率低下。相比之下,迭代方法更为高效,且避免了栈溢出的风险。不过,对于超大规模的阶乘...

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

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

    java中比较常见的经典算法

    四、阶乘算法 阶乘是 Java 中经典的算法之一。通过使用递归,可以实现阶乘的计算。下面是实现代码: ```java public int factorial(int num) { if(num == 1) { return 1; } return num*factorial(num-1); } ```...

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

    在本文中,我们将介绍一种使用 Java 实现的超大整数阶乘算法代码详解,采用“数组进位”算法来解决超大整数的阶乘问题。 首先,让我们来了解一下什么是阶乘。阶乘是一个数学运算符,表示一个数的所有正整数因子相乘...

    Java阶乘求和计算范例.rar

    在本示例中,我们关注的是使用Java编程语言来实现阶乘求和的计算过程。阶乘是一个数学概念,表示一个正整数n的所有小于等于n的正整数的乘积,通常用n!表示。例如,5!(5的阶乘)等于5 * 4 * 3 * 2 * 1 = 120。这个...

    递归算法(阶乘)

    在Java程序中,有两种常见的方法实现阶乘的计算:递归方式和循环方式。首先,让我们详细解析这两个方法: 1. 递归方式: `getDigui` 方法就是一个递归实现的例子。递归的核心思想是将大问题分解成小问题来解决。在...

    Java计算阶乘 源代码

    在Java中,我们可以使用循环或递归的方式来计算阶乘。以下是两种可能的实现方式: **1. 使用循环计算阶乘** ```java public class Factorial { public static long factorial(int n) { long result = 1; for ...

    n的阶乘问题--阶乘位数--阶乘末尾0的个数

    在编程领域,阶乘是一个常见的数学概念,尤其在算法和计算数学中经常被用到。本文将深入探讨“n的阶乘问题”,包括阶乘的定义、计算阶乘位数的方法以及如何确定阶乘末尾零的个数。 首先,阶乘是指一个正整数n与小于...

    java算法设计算法

    `common.java`可能包含递归和非递归算法的实现,如阶乘计算、汉诺塔问题等。非递归算法通常使用循环结构来替代递归,可以避免栈溢出,但实现起来可能更复杂。 4. **矩阵连乘**:矩阵连乘是一个基础数学问题,在...

    JAVA实现1到10的阶乘 ............

    本篇文章将详细介绍如何在Java编程语言中实现计算1到10的阶乘,并对给出的代码进行解析,帮助读者理解其工作原理以及相关的Java基础知识。 #### Java基础知识回顾 在深入分析之前,我们先回顾一下几个重要的Java...

    java面试中的算法

    根据给定的信息,我们可以提取并总结出几个与Java面试中常见的算法相关的知识点: ### 1. 冒泡排序(Bubble Sort) 冒泡排序是一种简单的排序算法。它重复地走访过要排序的数列,一次比较两个元素,如果他们的顺序...

    java阶乘应用小程序

    Java阶乘应用小程序是一种常见的编程练习,用于帮助初学者理解递归、循环和数学概念在编程中的应用。在这个小程序中,我们将探讨如何使用JAVA来计算一个整数的阶乘,并进一步实现1到20所有整数阶乘的和。下面我们将...

    java笔试常见的算法题

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

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

    在Java中,我们可以使用递归来计算一个数的阶乘。阶乘是一个数学概念,表示一个正整数n的所有小于等于n的正整数的乘积,通常表示为n!。例如,5的阶乘(5!)等于5 x 4 x 3 x 2 x 1,即120。 在给定的Java代码中,...

Global site tag (gtag.js) - Google Analytics