JAVA基础 第二篇:阶乘

阶乘——理工科领域常用的一种数学符号。关于阶乘,一般定义为:一个正整数的阶乘是不大于这个数的所有正整数的乘积,并且0的阶乘为1。

阶乘的应用范围非常广,比如后面我们要讲到的排列组合、超越数E、梅森数和梅森素数、伪素数等等,因此在我们利用BigDecimal来处理。

代码:

	/**
	 * 自然数的阶乘
	 * 
	 * @param number
	 * @return
	 */
	private static BigDecimal factorial(BigDecimal number) {
		// TODO Auto-generated method stub
		BigDecimal multiply = BigDecimal.ONE;
		if (number.equals(BigDecimal.ZERO))
			multiply = BigDecimal.ONE;
		else if (number.compareTo(BigDecimal.ZERO) > 0 && intNumber(number))
			for (BigDecimal count = BigDecimal.ONE; count.compareTo(number) <= 0; count = count.add(BigDecimal.ONE))
				multiply = multiply.multiply(count);
		else
			return null;
		return multiply;
	}
	/**
	 * 输出阶乘
	 * 
	 * @param number
	 */
	private static void factorialPrint(BigDecimal number) {
		// TODO Auto-generated method stub
		if (number.compareTo(BigDecimal.ZERO) >= 0 && intNumber(number))
			System.out.println(number + " ! = " + factorial(number));
	}

比如我们求不大于10的自然数的阶乘,只需在main()方法中输入如下代码即可:

	for (BigDecimal number = BigDecimal.ZERO; number.compareTo(BigDecimal.TEN) <= 0; number = number
				.add(BigDecimal.ONE))
			factorialPrint(number);

运行结果:

0 ! = 1
1 ! = 1
2 ! = 2
3 ! = 6
4 ! = 24
5 ! = 120
6 ! = 720
7 ! = 5040
8 ! = 40320
9 ! = 362880
10 ! = 3628800

 

你可能感兴趣的:(JAVA,编程基础)