public class ComE
{
static int jiechen(int n)
{
int i,a=1;
for(i=1;i<=n;i++)
{
a*=i;
}
return a;
}
static double sum(int n)
{
int i,b=0;
for(i=1;i<=n;i++)
{
b+=(double)(1/jiechen(i));
}
return b;
}
public static void main(String[] args)
{
System.out.println("the answer is"+sum(7));
}}
1+1/2!+1/3!+1/4!+。+1/N!
此处我设置为求N=7的结果,执行后却为1。0
请问哪儿出了问题,该如何改?
{
static int jiechen(int n)
{
int i,a=1;
for(i=1;i<=n;i++)
{
a*=i;
}
return a;
}
static double sum(int n)
{
int i,b=0;
for(i=1;i<=n;i++)
{
b+=(double)(1/jiechen(i));
}
return b;
}
public static void main(String[] args)
{
System.out.println("the answer is"+sum(7));
}}
1+1/2!+1/3!+1/4!+。+1/N!
此处我设置为求N=7的结果,执行后却为1。0
请问哪儿出了问题,该如何改?
在J2SE1。4。2下结果为1。0,
结果比预期的小,当n=2是已经是1。5了哦
中jiecheng(i)为int,所以1/jiechen(i)还是int,若jiechen(i)<1答案就为0,转化为double还是0,答案当然就是1了阿(1是当jiechen(i)=1时加上去的)
中jiecheng(i)为int,所以1/jiechen(i)还是int,若jiechen(i)>1答案就为0,转化为double还是0,答案当然就是1了阿(1是当jiechen(i)=1时加上去的)
{
int i,a=1;
for(i=1;i<=n;i++)
{
a*=i;
}
return new BigDecimal(a);
}
static BigDecimal sum(int n)
{
int i=0;
BigDecimal b=new BigDecimal(0);
final BigDecimal c=new BigDecimal(1);
for(i=1;i<=n;i++)
{
b=b.add(c.divide(jiechen(i),5,5));
}
return b;
}
public static void main(String[] args)
{
System.out.println("the answer is:"+sum(7));
}