Tag: factorial

因子Java程序

我想使用for循环在java中做一个阶乘程序。 例如,我想取用户输入,比方说10 ,然后乘以10*9*8*7*6*5*4*3*2*1 。 我需要帮助构建for循环。 下面的代码是我所有的,因为我不知道该去哪里。 import java.util.Scanner; import java.lang.Math; public class factorial { public static void main(String[] args) { int num; Scanner input = new Scanner(System.in); System.out.println(“Enter a number: “); num = input.nextInt(); } }

为什么Haskell中的因子计算要比Java中快得多

我遇到的一个编程问题涉及计算大数的阶乘(数字高达10 ^ 5)。 我见过一个简单的Haskell代码,就像这样 factorial :: (Eq x, Num x) => x -> x factorial 0 = 1 factorial a = a * factorial (a – 1) 即使没有代码中涉及的任何缓存,它也会隐式处理大量数字并以某种方式运行得更快。 当我尝试使用Java解决问题时,我不得不使用BigInteger来保存大量数据并使用因子的迭代版本 public static BigInteger factorialIterative(int n) { if(n == 0 || n == 1) return BigInteger.valueOf(1); BigInteger f = BigInteger.valueOf(1); for(int i = 1 ; i <= […]

Factorial in Java

我一直在使用这个Java的阶乘程序: public static long factorial(int a) { if(a1) { result*=x; x–; } return result; } 然而,它似乎“破裂”并在25的阶乘后返回一个负数。它返回一个负数然后只返回“0”。 我做错了导致这种情况吗?

在Java中查找大数的阶乘

我尝试使用for-loop和double数据类型以典型方式找到大数的阶乘,例如8785856。 但结果显示无穷大,可能是因为它超出了极限。 所以请指导我找到一个非常大的阶乘的方法。 我的代码: class abc { public static void main (String[]args) { double fact=1; for(int i=1;i<=8785856;i++) { fact=fact*i; } System.out.println(fact); } } 输出: – Infinity 我是Java的新手,但他已经学会了一些IO处理的概念。

当使用整数计算Java的阶乘100(100!)时,我得到0

这样做时: int x = 100; int result = 1; for (int i = 1; i < (x + 1); i++) { result = (result * i); } System.out.println(result); 这显然是因为结果对于整数而言太大了,但我习惯于为溢出得到大的负数,而不是0。 提前致谢! 当我切换到这个: int x = 100; int result = 1; for (int i = 1; i < (x + 1); i++) { result = (result * […]

StackOverflowError计算BigInteger的阶乘?

我正在尝试编写一个Java程序来计算大数的阶乘。 似乎BigInteger无法容纳这么大的数字。 以下是我写的(直截了当的)代码。 public static BigInteger getFactorial(BigInteger num) { if (num.intValue() == 0) return BigInteger.valueOf(1); if (num.intValue() == 1) return BigInteger.valueOf(1); return num.multiply(getFactorial(num.subtract(BigInteger.valueOf(1)))); } 上述程序在5022中处理的最大数量,之后程序抛出StackOverflowError 。 有没有其他方法来处理它?