运用Java多线程实现阶乘相加问题,比如:1!+2!+3!+。。。。。+n!=
要求输出格式也是向上面的那样
运用Java多线程实现阶乘相加问题,比如:1!+2!+3!+。。。。。+n!=
要求输出格式也是向上面的那样
这种题的意思是用N个线程分别计算1!、2!、……N!
还是只开一个线程计算1!+2!+3!+。。。。。+n!
如果开N个线程,那出这个题的人脑子有问题,线程开这么多也很费资源的。
第二种在线程里写个递归函数,依次计算就好。
建议你自己查查递归写法,这种题目自己做多了才会有长进,老是看现成的表面上也许长了知识,但是动手能力成长有限。
//运用数组求更大的阶乘 public class factorial { static long[] tabal=new long[21]; static {tabal[0]=1;} static int last=0; public static long jisuan(int x){ if(x>tabal.length){ System.out.println("The X is too large !"); } if(x<0) System.out.print("The X must >=0 !"); while(last<x){ tabal[last+1]=tabal[last]*(last+1); last++; } return tabal[last]; } public static void main(String[] args) { // TODO Auto-generated method stub System.out.println("The factorial of the X is "+jisuan(20)); }
} //运用BigInteger计算更大更大的阶乘 import java.math.BigInteger; import java.util.*; public class factorial { protected static ArrayList table = new ArrayList(); static{ table.add(BigInteger.valueOf(1));} public static synchronized BigInteger jisuan(int x){ for(int size=table.size();size<=x;size++){ BigInteger lastfact= (BigInteger)table.get(size-1); BigInteger nextfact= lastfact.multiply(BigInteger.valueOf(size)); table.add(nextfact); } return (BigInteger) table.get(x); }
public static void main(String[] args) { // TODO Auto-generated method stub System.out.println(jisuan(1480)); }
}
这个应该不需要递归函数吧?
long sum=1;
long long summ = 0
for(int i=1;i<=n;i++)
for(int j=1;j<=i;j++)
{ sum = j*sum
}
summ = sum+summ;
} 这个算法就应该可以了 这个跟怎么线程扯上关系了 扯淡 如果开N个线程只能说脑残