因子挑战(初学者的挑战)

2 java math factorial

我尝试了以下挑战:

鉴于前几个因素:

1!= 1

2!= 2 x 1 = 2

3!= 3 x 2 x 1 = 6

4!= 4 x 3 x 2 x 1 = 24

前15个阶乘的总和是多少,不包括0!?

我在Java中的解决方案如下:

public class Factorial
{
   public static void main(String[] args)
   {
     int sum = 0;    
     int multi = 1;
        for (int i=1;i<=15;i++)         
        {
        multi = multi*i;
        sum = multi+sum;     
        }     
     System.out.print(sum);
   }
}
Run Code Online (Sandbox Code Playgroud)

我验证了前7个阶乘的解决方案,但是它适用于前15个吗?

Jef*_*rey 6

由于整数溢出,它不适用于前15个阶乘.正确的答案是1401602636313,它超过了Java的int2147483647 的界限.您可以使用long具有9223372036854775807或a的界限BigInteger.


Gya*_*ngh 5

不,15 秒内不起作用。使用时间较长。另外,您可以将 print 语句移动到循环内,以检查它开始失败的位置。我猜在这种情况下是 13。