编写java程序,计算1!+2!+3!+...20!之和并在屏幕上输出

如题所述

public class test {
public static void main(String[] args) throws Exception {
int sum = 0;
for(int i=1;i<=20;i++){
int temp = 1;
for(int j=1;j<=i;j++){
temp*=j;
}
sum+=temp;
}
System.out.println("1-20阶乘的和为:"+sum);
}
}

答案补充:上面算法只适合于阶乘合并不是很大的情况 如果合超过int变量所能表达的值 就要用BigDecimal变量了~
例如上面程序计算1-21的阶乘和会是-927073767 导致错误
程序如下修改以后 答案就正确了53652269665821260313
非常感谢老大提醒~~~

public class T {
public static void main(String[] args) {
test2(20);
}
public static void test2(int k) {
BigDecimal total = new BigDecimal("0");
BigDecimal current = new BigDecimal("1");
for (int i = 1; i <= k; i++) {
current = current.multiply(new BigDecimal(String.valueOf(i)));
total = total.add(current);
}
System.out.println(total);
}
}

参考资料:http://www.java2000.net/p10869

温馨提示:内容为网友见解,仅供参考
第1个回答  推荐于2017-09-19
分成两个部分计算

//方法1 计算阶乘 @param int @return int
好久不学数学了,我都不知道阶乘怎么算的了
public int function1(int i)
{
int b= 0 ;
//
b = i的阶乘
return b;
}

//方法2 计算和 @param int[] @return int
int[] array = {1,2,3,……20};

public int sum(int[] array)
{
int sum = 0;
for(int i =0;i<array.length;i++)
{
sum += funtion1(array[i]); //调用计算阶乘的
}
return sum;
}本回答被提问者采纳
第2个回答  2008-10-14
class Factorial{
long f = 1;
public long ff(int num){
if(num>0){
if(num == 0||num == 1)
f = 1;
else f = num*ff(num-1);
}
return f;
}

}

public class TestFactorial_1{
public static void main(String args[]){
Factorial numbers = new Factorial();

// 在下面 i 后面输入数字!!

int i = 20;

if(i<0)
System.out.println("输入非法数据请重新输入!!");
else if(i>25)
System.out.println("数据溢出!!");
else if(i >= 0&&i<=25){
int j=0;
long sum = 0;
System.out.println("输入"+"\t"+"输出");
for( j=0;j<=i;j++){
sum = sum +numbers.ff(j);
System.out.println(j+"\t"+sum);
}
}
else
System.out.println("同志,你输的不是数字!!");

}
}
第3个回答  2008-10-28
已经测试可以使用,有可能溢出,数据之和太大,可以缩小范围,求的是10到20的阶乘之和。
public class A
{
public static void main(String args[])
{
double sum=0,a=1;
int i=1;
while(i<=20)
{
//if(i>=10)
sum=sum+a;
i++;
a=a*i;
}
System.out.println("sum="+sum);
}
}
第4个回答  2015-10-03
{
int f(int n)
{
int t = 0;
int s = 1;
for(int i = 1;i <= n;i++)
{
s = s * i;
t = t + s;
}
return t;
}
public static void main (String [] args)
{
int m = 20;//改变这个m的值即可改变输出结果
FactorialPlus p = new FactorialPlus();
if(m >= 0)
{
System.out.println(p.f(m));
}
else
{
System.out.println("请输入一个大于0的数");
}
}
}

编写一个JAVA程序,计算1!+2!+3!+...+20!之和并在屏幕上输出
public static void main(String[] args) throws Exception { int sum = 0;for(int i=1;i<=20;i++){ int temp = 1;for(int j=1;j<=i;j++){ temp*=j;} sum+=temp;} System.out.println("1-20阶乘的和为:"+sum);} } 答案补充:上面算法只适合于阶乘合并不是很大的情况 如果...

用JAVA计算1!+2!+3!+。。。+20!的和
public class sum{ public static void main(String[] args) throws Exception { int sum = 0; for(int i=1;i<=20;i++){ int temp = 1; for(int j=1;j<=i;j++){ temp*=j; } sum+=temp; } System.out.println("1-20阶乘和为:"+sum); } } ...

java编写 利用while循环语句,计算1!+2!+3!+…+20!的总和
public static void main(String[] args) { long result = 0;for (int i = 1; i <= 20; i++) { long mul = 1;for (int j = 1; j <= i; j++) { mul *= j;} result += mul;} System.out.println("1!+2!+3!+4!+5!+。。。+20!=" +result);} } 第二种做法...

求1+2!+3!+...+20!的和。要java算法。并且告诉我1+2!+3!+...+20!等...
采用递归就OK了,答案是:2561327494111820313 代码如下:public class MyFactorial { public static void main(String[] args) { System.out.println(factorial(20));} private static long factorial(int a) { long s=0;if(a==0) s=0;if(a==1) s=1;else if(a>=2){ s=a * (factorial...

怎样用java求"方法实现1!+2!+3!+…+20!"
运行结果如下:代码如下:public class Test{ public static void main(String[] args){ System.out.println("1!+2!+3!+……+20!="+getSum(20));} public static long getSum(int n){ int i,k,fac,sum=0;for(i=1;i<=n;i++){ fac=1;for(k=1;k<=i;k++)fac=fac*k;sum=...

编写一个Application程序,求1!+2!+3!+。。。+20!。
import java.math.BigInteger; \/\/大数字的运算需要这个类 import java.util.Scanner; \/\/输入类 public class jiecheng { \/ param args \/ public static void main(String[] args) { String s = "";\/\/ TODO 自动生成方法存根 System.out.println("求1!+2!+3!+...+n!请输入n(输入值需为...

编写一个java程序,计算1+2!+3!+4!+……前100项之和
{ public static void main(String[] args) { int ji=1;int sum =0;for(int i=1;i<=10;i++) { ji=ji*i;sum = sum+ji;System.out.println(ji);} System.out.println("和为:"+sum);} } 这是小于10 的,他的和为4037913 ,所以100 你得改数据类型,太大int 装不下。

...JAVA程序,从键盘输入一个数,计算阶乘.如输入:3,则输出1!+2!+3...
import java.util.Scanner;public class A{ \/\/下面的方法是对单个数求阶乘,并返回 public static int jieCheng(int n){ int sum=1;for(int i=1;i<=n;i++){ sum*=i;} return sum;} \/\/下面是对所有数求阶乘,再全部相加,并返回 public static int add(int n){ int sum=0;for(int ...

(JAVA编程)写一个完整的程序使用循环结构计算1+2+3...+100的和并输出...
不知道是不是你想要的方式 public class tests{ public static void main(String[] args) { int result=0;for(int i=1;i<=100;i++){ result=result+i;} System.out.print(result);} } 输出结果:5050

用JAVA编写程序,计算1!+2!+3!+…+n!的和,其中阶乘的写一个方法...
public class Factorial { \/\/下面的这个方法利用递归的方法求阶乘 public int getFac(int m){ if(m==1){ return 1;} else { return m*getFac(m-1);} } public static void main(String args[]){ Factorial fac=new Factorial();\/\/System.out.println(fac.getFac(4));int sum=0;for(...

相似回答