java - 欧拉递归的逻辑问题

标签 java recursion

我想要用户输入的数字n的欧拉数e,逻辑部分有问题,输入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);
}

}

最佳答案

谨防Integer division .

用途:

1.0/fact(n)

获取 double 值。

关于java - 欧拉递归的逻辑问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16150122/

相关文章:

java - 故障安全迭代器和弱一致性迭代器

java - HSQL 列名包含 #

java - 递归地查找并行数组上的值

c++ - 递归可变参数模板无法推导出参数

python - 使用顺序规则生成所有可能的 N 元素序列

java - 当线程执行时,CPU 内部到底发生了什么?

java - 增强的 For-Loop 在自定义集合实现 Iterable 接口(interface)时引发编译错误

c - 如何找到递归函数调用自身的次数?

objective-c - 递归地从 JSON 结构中删除空值

跨包的 Java 常量