2017-05-25 24 views
-1

问题是收到以前的计算结果。如何接收另一班的阶乘结果?

public class FactorialArray { 

    public static long[] factorial = new long[21]; 
    public static int fact = 0; 

    static { 
     factorial[0] = 1; 
    } 

    public static long factorial(int x) { 
     while (fact < x) { 
      long element; 
      factorial[fact] = element.getFact(element); 
      fact++; 
     } 
     return factorial[x]; 
    } 

这里,它是我计算阶乘的类:

public class Factorial { 

    private long factorialCalculator(int x){ 
     if(x==0 || x==1) 
      return 1; 
     else 
      return (long)x*factorialCalculator(x-1); 
    } 

    public long getFact(int x){ 
     return factorialCalculator(x); 
    } 
} 
+0

'factorial [fact] = element.getFact(element)'?? ?? –

+0

我认为你可以做另一个类,并使用一个简单的返回方法,在其中放置实际在你的主体中的代码,那么你不需要声明任何静态的方法 – MaQuiNa1995

+0

这些方法返回一个值。什么是问题? –

回答

0

公共静态长[]阶乘(INT X){ 阶乘factObj =新阶乘();

while (fact < x) { 
     long element; 
     factorial[fact] = factObj.getFact(fact); 
     fact++; 
    } 
    return factorial; 
} 

static class Factorial { 

    private long factorialCalculator(int x) { 
     if (x == 0 || x == 1) 
      return 1; 
     else 
      return (long) x * factorialCalculator(x - 1); 
    } 

    public long getFact(int x) { 
     return factorialCalculator(x); 
    } 
} 
+0

现在它计算任何因子为0 – Student

+0

返回因子[x]这就是为什么它显示0,我们计算到x-1。而是打印阶乘数组。并用输入值创建数组长度 –