Java 递归中的逻辑问题

Java 递归中的逻辑问题,java,recursion,Java,Recursion,我想用euler数e表示用户输入的数字n,逻辑部分有问题,输入2时,我似乎无法得到2.5的正确答案,相反,我得到了2。事实上,无论输入是什么,我总是得到2的答案。问题在于euler方法,因为阶乘打印出正确的答案。 这是代码 import java.util.*; public class pract5ex3 { public static int fact (int n){ if (n==0 || n==1){ return 1; }

我想用euler数e表示用户输入的数字n,逻辑部分有问题,输入2时,我似乎无法得到2.5的正确答案,相反,我得到了2。事实上,无论输入是什么,我总是得到2的答案。问题在于euler方法,因为阶乘打印出正确的答案。 这是代码

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);
}
}

小心

使用:

要获得双倍值。

请小心

使用:


要获得双精度值。

表达式
1/fact(n)
进行整数除法,如果阶乘大于1,则会得到零。只需将其更改为
1.0/fact(n)

表达式
1/fact(n)
进行整数除法,如果阶乘大于1,则会产生零。只需将其更改为
1.0/fact(n)

1.0/fact(n)