我想用euler数字e表示用户输入的数字n,逻辑部分有问题,输入2时我似乎无法得到2.5的正确答案,而是得到2。事实上,无论输入是什么,我总能得到2的答案。问题在于欧拉方法,因为因子打印出正确的答案。 这是代码。
import java.util.*;
public class pract5ex3 {
public static int fact (int n){
if (n==0 || n==1){
return 1;
}
else {
return n*fact(n-1);
}
}
public static double constantRec(int n){
if (n == 0){
return 1;
}
else {
return 1/fact(n)+constantRec(n-1);
}
}
public static void main (String []args) {
Scanner s= new Scanner (System.in);
System.out.println("enter number");
int n =s.nextInt();
int factorial = pract5ex3.fact(n);
double euler = pract5ex3.constantRec(n);
System.out.println(factorial);
System.out.println(euler);
}
}
答案 0 :(得分:3)
答案 1 :(得分:2)
表达式1/fact(n)
执行整数除法,如果factorial大于1,则将产生零。只需将其更改为1.0/fact(n)
。