我正在用java循环做一个阶乘问题,它询问1 + 1/2!+1/3!+ ... + 1 / n!,n是正数, 我正在使用“while”来制作它,但代码没有运行:
public static void main(String[] args) {
double sum=0,a=1;
int n=Integer.parseInt(args[0]);
while(n>0){
a=a*n;
sum=sum+1.0/a;
}
System.out.print(sum);
}
请帮助:)
答案 0 :(得分:6)
while(n>0){
a=a*n;
sum=sum+1.0/a;
}
您何时更改n
?你没有。条件将始终满足,您永远不会退出循环。考虑更改循环体中n
的值。
Iteration | n
-----------+--------
1 | n > 0 ? Yes
2 | n > 0 ? Yes
3 | n > 0 ? Yes
... |
... |
Forever | n > 0 ? Yes
答案 1 :(得分:1)
正如其他人所指出的那样,你的原始while循环永远不会结束,因为n的值永远不会改变,这意味着while条件总是为真(假设原始值大于零)。
这可能是你想要实现的目标吗?
public static void main(String[] args)
{
double sum = 0, a = 1;
int n = Integer.parseInt(args[0]);
for ( int i = 1; i <= n; i++ )
{
a *= i;
sum = sum + (1.0 / a);
}
System.out.print(sum);
}
答案 2 :(得分:0)
您的代码等于:
while(true){
a=a*n;
sum=sum+1.0/a;
}
您不能更改n
值,n
必须<=0
到break
loop
。
答案 3 :(得分:0)
为什么不试试for
循环让我们说
public static void main(String[] args) {
double sum=0;
int n=Integer.parseInt(args[0]);
for(double a=1;a<=n;a++){
sum=sum+1.0/a;
}
System.out.print(sum);
}