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

 我来答
百度网友3b46a7f
2008-10-14 · TA获得超过2520个赞
知道小有建树答主
回答量:735
采纳率:0%
帮助的人:0
展开全部
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

198901245631
2015-11-05 · TA获得超过3.5万个赞
知道大有可为答主
回答量:9037
采纳率:92%
帮助的人:1673万
展开全部
实现思路:就是先计算出每个数的阶乘,之后在进行求和,一直循环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("结果为:"+sum);
}
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
郭某人来此
2015-10-06 · TA获得超过1645个赞
知道答主
回答量:952
采纳率:100%
帮助的人:85.5万
展开全部
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);
}
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
byzh4
2008-10-15 · 超过21用户采纳过TA的回答
知道答主
回答量:79
采纳率:0%
帮助的人:0
展开全部
楼上的两位回答已经很好了:
换个方式写下:
public class Test {

private int getNum(int n){//获得n的阶乘
if(n<=1){
return 1;
}
return getNum(n-1)*n;
}

private int getSum(int n){//获得1!-n!的和
if(n<=1){
return 1;
}
return (getSum(n-1)+this.getNum(n));
}

public static void main(String[] args) {
Test t=new Test();
int n=20;
int sum=t.getSum(n);
int num=t.getNum(n);
System.out.println("n!:"+num);
System.out.println("sum:"+sum);
}
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
xuntengguoji
2008-10-14 · TA获得超过180个赞
知道答主
回答量:349
采纳率:0%
帮助的人:0
展开全部
其实很简单 你只需写出一个阶乘的代码
阶乘英文 忘记了 用中文代替,
public int jiecheng(int n)
{int result=1;
if(n<=0)
{
return 0;
}

while(n>0)
{result=result*n;
}
return result;
}

要算出1-20的阶乘只需
for(int i=0;i<20;i++)
{
int result=0;
result+=jiecheng(i);
}
最后输出result就行了
这是我现写的代码,可能有问题但决不会太大,用用看
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(3)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式