手抄报 安全手抄报 手抄报内容 手抄报图片 英语手抄报 清明节手抄报 节约用水手抄报

如何用Java实现双阶乘运算

时间:2024-10-13 16:25:55

双阶乘用“m!!”表示。当m是自然数时,表示不超过m且与m有相同奇偶性的所有正整数的乘积。如:(2n-1)!!=1×3×5×···×(2n-1)2n!!=2×4×6×8×···×2n当m是负奇数时,表示绝对值小于它的绝对值的所有负奇数的绝对值积的倒数。当m是负偶数时,m!!不存在.在这里,我们只计算正整数,以正整数为例。

如何用Java实现双阶乘运算

工具/原料

一台再正常不过的已经配置了java环境的电脑

Java实现双阶乘

1、创建工程,或使用已有工程,在工程下创建包,包内新建一个类,我命名为DoubleFactorial类,大家根据自己喜好随便命名,但请保持类名与文件名一致。

如何用Java实现双阶乘运算

2、设这个数字是常量17,也即我们要运算的数值是17的阶乘,也即17!private static final int ORIGINAL_NUMBER = 17;

如何用Java实现双阶乘运算

3、这里我用一个递归函数来处理这个问题。考虑到奇偶问题,if语句进行判断:private static long doubleFactorial(long original) {  if (original % 2 == 0) {     if (original == 2) {      return 2L;     }     return original * doubleFactorial(original - 2);  } else {     if (original == 1) {      return 1L;     }     return original * doubleFactorial(original - 2);  }}//递归函数消耗资源较大,而且long值表示的范围在此也很局限,因个人电脑配置以及JVM内存配置而异,factorial值不应该过大,此处,笔者的机子最多可以算出23的阶乘。

如何用Java实现双阶乘运算

4、将该递归函数写在一个main函数中,运行一下结果。此处,为了不发生折行,我把结果写在两个输出语句里。  System.out.print(ORIGINAL_NUMBER + "!! = ");  System.out.println(doubleFactorial(ORIGINAL_NUMBER));如果 original 是 偶数 6,则结果为 48 无误。如果 original 是 奇数17, 则结果为68918850,计算器算得也无误。

如何用Java实现双阶乘运算
© 手抄报圈