public class Example_02 { public static void main(String args[]) { double sum = 0,a = 1; int i = 1; while(i <= 20) { sum = sum+a; i = i+1; a = a*(1.0/i); } System.out.println(sum); } }
是不是应该改成这样:public class Example_02 { public static void main(String args[]) { double sum = 0,a = 1; int i = 1; while(i <= 20) { sum = sum+a; i = i+1; a = 1.0/(a*i); } System.out.println(sum); } }
public class Test { public static void main(String args[]) { double sum = 0, a = 1; int i = 1; while (i <= 20) { sum += 1.0 / a; a *= ++i; } System.out.println(sum); } }
这个是错误的,自己用笔算一下就可以知道了,只计算到3,sum就是错的,算法有问题 我写的,给你作参考public class ee { public static void main(String[] args) { float sum = 0; float p = 1; while (p <= 6) { float m = 1 / p; sum = sum + m; p = p + 1; } System.out.println("sum " + sum); } }
public class Example_02 { public static int factorial(int i) { int result = 1; while(i!=0) { result *= i--; } return result; } public static void main(String[] arguments) { int i = 1 ; double sum = 0.0 , a = 0.0; while( i<=20 ) { a = 1.0 / (double) factorial(i); sum += a; ++i; } System.out.println(sum); } }
public static void main(String[] args) { int i=1,k=1; double sum=0; while(i<=20){ k*=i; //k是除数,是i的阶乘 sum+=(1.0)/k; i++; } System.out.println(sum); }你里面的 a = 1.0/(a*i) 目的是求 1/n!,但不能这么写的,阶乘要作为一个除数来用
楼主的问题错在 int i = 1;这里,如果指定 i 为int类型,当你计算1/i的时候,结果为0,而不是你想要的,这是由java中int类型决定的,如果 定义 double i = 1;再运行你的程序,结果就正确了,这个就好比:short s1 = 1; s1 = s1 + 1;会提示错误一样,因为会自动提升表达式类型
public static void main(String args[])
{
double sum = 0,a = 1;
int i = 1;
while(i <= 20)
{
sum = sum+a;
i = i+1;
a = 1.0/(a*i);
}
System.out.println(sum);
}
}
public static void main(String args[]) {
double sum = 0, a = 1;
int i = 1;
while (i <= 20) {
sum += 1.0 / a;
a *= ++i;
}
System.out.println(sum);
}
}
我写的,给你作参考public class ee { public static void main(String[] args) {
float sum = 0;
float p = 1;
while (p <= 6) {
float m = 1 / p;
sum = sum + m;
p = p + 1;
}
System.out.println("sum " + sum);
}
}
public class Example_02
{
public static int factorial(int i)
{
int result = 1;
while(i!=0)
{
result *= i--;
}
return result;
} public static void main(String[] arguments)
{
int i = 1 ;
double sum = 0.0 , a = 0.0;
while( i<=20 )
{
a = 1.0 / (double) factorial(i);
sum += a;
++i;
}
System.out.println(sum);
}
}
user=> (defn n! [n] (apply * (range 1 (inc n))))
#'user/n!
user=> (defn x [n] (apply + (map #(/ 1.0 (n! %)) (range 1 (inc n)))))
#'user/x
user=> (x 20)
1.7182818284590455
和你的结果一样。
int i=1,k=1;
double sum=0;
while(i<=20){
k*=i; //k是除数,是i的阶乘
sum+=(1.0)/k;
i++;
}
System.out.println(sum);
}你里面的 a = 1.0/(a*i) 目的是求 1/n!,但不能这么写的,阶乘要作为一个除数来用