java求1+1/2!+1/3!...+1/20!的和,我编了个程序但是不能编译,不知道是为什么

来源:百度知道 编辑:UC知道 时间:2024/06/19 23:29:45
public class Wjst
{
public static void main(String args[])
{
long i=1,j=1,s=1;
do
{
j=j*i;
i=i+1;
s=s+1/j;
}
while (i<21);
}
System.out.println("s="+s);
}
编译的时候指出是打印这条语句出错了

public class Wjst
{
public static void main(String args[])
{
long i=1;
float s=1;
for(i=2;i<=20;i++){
s=s+(float)1/(fac(i));
}
System.out.println("s="+s);
}
public static long fac(long i){
long s;
if(i==0 || i ==1){
return 1;
}
else{
s=fac(i-1)*i;
}
return s;
}
}

//搞定 jdk1.5.06编译通过
//你把System.out.println("s="+s); 写在main函数外面了

第一,编译错误的原因是System.out.println("s="+s); 语句应放在main函数中
第二,逻辑错误,1+1/2!+1/3!...+1/20!的和一层循环是不能够实现的

System.out.println("s="+s); 前面多了个花括号.

//变量声明为float型
public static void main(String[] args){
float i=1;
float j=1;
float s=0;
for(;i<21;i++){
j=j*i;
s=s+1/j;
}
System.out.println("s="+s);
}