Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/363.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/loops/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java NBigInteger生成一个循环_Java_Loops_Biginteger - Fatal编程技术网

Java NBigInteger生成一个循环

Java NBigInteger生成一个循环,java,loops,biginteger,Java,Loops,Biginteger,我写这个小程序是为了找到n!: public class Fattoriale { public static void main (String[] args){ int n; do { n = Input.readInt("Enter an int number ( int >=0)"); while( n < 0); long fatt

我写这个小程序是为了找到n!:

public class Fattoriale {
        public static void main (String[] args){
            int n;
            do {
                n = Input.readInt("Enter an int number ( int >=0)");
            while( n < 0);
            long fatt = 1;
            for (int i = 2; i <= n; i++){
                fatta = fatt * i;
            }
            System.out.println(n"+!" + " = " + fatt);
公共类Fattoriale{
公共静态void main(字符串[]args){
int n;
做{
n=Input.readInt(“输入一个整数(int>=0)”);
n<0;
长fatt=1;

对于(int i=2;i这应该是这样的,因为
i.add(biginger.ONE)
不会更新变量
i

for (; i.compareTo(big) <= 0; i=i.add(BigInteger.ONE)) {
    tot = tot.multiply(i);
}

biginger
是不可变的,因此除非您使用
=
运算符为其设置新值,否则其值不会更改。因此,每次在调用
i.add(biginger.ONE)
的循环中,计算机都会计算i+1,然后丢弃结果。相反,请尝试:

for (; i.compareTo(big) < 0; i=i.add(BigInteger.ONE)){
(;i.compareTo(big)<0;i=i.add(biginger.ONE))的
{

i
使用
biginger
不是有点过分吗?我可以看到你的总数(
tot
)可能很容易变得非常大,但是如果您尝试获取
n!
where
n>整数。MAX_VALUE
,我怀疑这将需要很长时间…Wolfram Alpha指出,如果
I
对于32位整数来说太大,您的答案将需要超过10 GB的存储空间:非常感谢!我忘记了
BigInteger i = new BigInteger("2");
System.out.println(i.add(BigInteger.ONE));   // print 3
System.out.println(i);                       // print 2
for (; i.compareTo(big) < 0; i=i.add(BigInteger.ONE)){