计算1!+2!+3!+4!+…. + n!。
编写程序,从键盘上输入一个正整数n(n小于20),计算1!+2!+3!+4!+…. + n!。设计方法:另外设计一个类提供计算某个整数n的阶乘的方法long fac(int n),以及计算1+2!+3!+4!+ n!的方法long sum(int n),然后在main方法中通过该类的对象调用sum方法,如下所示。
class XXX
{
public long fac(int n) { 。。。。代码。。。。}
public long sum(int n) { 。。。。代码。。。。}
}
public class 主类
{
public static void main(String[] arg)
{
从键盘输入一个整数n;
通过调用XXX类的sum方法计算阶乘;
输出阶乘和。
}
}
我的程序错在哪里啊?
class XXX
{
public long fac(int n)
{
int a[];
a=new int[n];
a[i]=1;
for(int i=0;i<n;i++)
a[i]=a[i]*i;
return a[i];
}
}
public long sum(int n)
{
int s;
for(int k=0;k<n;k++)
s=s+a[k];
return s;
}
public class BreakDemo
{
public static void main(String[] arg)
{
System.out.println("Input n:");
XXX xxx=new XXX(n);
System.out.println("s:"+xxx.sum(n));
}
}
搜索更多相关主题的帖子:
正整数
----------------解决方案--------------------------------------------------------
应该是long fac()函数出错了吧
----------------解决方案--------------------------------------------------------
回复 2楼 柠檬可乐
麻烦你帮我把程序改对好吗?我真的不知道怎么做! ----------------解决方案--------------------------------------------------------
for(int i=0;i<n;i++)
a[i]=a[i]*i;
0的情况没有去除 结果是0
----------------解决方案--------------------------------------------------------
你的n一大,程序就出错了,试试n等于100
----------------解决方案--------------------------------------------------------
楼主 我觉得你要好好的把类的定义与使用 还有方法的使用要去弄明白
我写的代码:
import java.util.*;
class XXX
{
public long fac(int n)
{
long num=1;
for(int i=1;i<=n;i++)
num = num*i;
return num;
}
public long sum(int n)
{
long result = 0;
for(int k=1;k<=n;k++)
{
result = result+fac(k);
}
return result;
}
}
public class BreakDemo
{
public static void main(String[] arg)
{
System.out.println("Input n:");
Scanner in = new Scanner(System.in);
int n = in.nextInt();
XXX xxx=new XXX();
System.out.println("s:"+xxx.sum(n));
}
}
希望可以给你帮助
----------------解决方案--------------------------------------------------------
public long fac(int n)
{
int a[];
a=new int[n];
a[i]=1;
for(int i=0;i<n;i++)
a[i]=a[i]*i;
return a[i];
}
public long sum(int n)
{
int s;
for(int k=0;k<n;k++)
s=s+a[k];
return s;
}
最佳算法:
int s;
for(int k=n;k>0;k--)
s=(s+1)*k;
return s;
----------------解决方案--------------------------------------------------------
以下是引用freish在2009-9-27 12:07:06的发言:
你的n一大,程序就出错了,试试n等于100
用java.math包中的BigInteger类,可以计无穷大的n! 你的n一大,程序就出错了,试试n等于100
----------------解决方案--------------------------------------------------------