java - 返回递归中的数字集

标签 java arrays recursion

以下代码搜索多项式函数的一个零点。它使用递归技术:

    private static double funktion(int[] koef, double x){
        return koef[0] * Math.pow(x,4) + koef[1] * Math.pow(x,3) + 
               koef[2] * Math.pow(x,2) + koef[3]*x + koef[4]; 
    }

    private static double nullstelle(double a, double b, int[] koef){
        double middle = (a + b)/2;
        double result = middle; 
        if(Math.abs(a-b) > 0.00001){
            double sin = funktion(koef, middle);
            if(sin == 0){
                result = middle;
            }else if(Math.signum(funktion(koef, a)) == 
                             Math.signum(funktion(koef, middle))){
                result = nullstelle(middle, b, koef);
            }else{
                result = nullstelle(a, middle, koef);
            }
        }
        return result;
    }

我想知道如何返回所有零点。我的想法是使用数组,但我不知道该怎么做。有什么想法吗?

除了数组之外,我不允许使用任何其他东西(例如不允许使用哈希表或集合)

最佳答案

我会将一个集合(例如 HashSet)传递给您的函数,并将您发现的所有数字放入其中。

正如你所说,你只能使用数组,那么你大概知道可以找到的零点的最大数量,因此创建一个该大小的数组,为每个元素分配 NaN ,然后传入该数组和每个函数调用的最大当前索引。您需要返回数组的新大小作为结果,以便您始终知道找到了多少个数字。

关于java - 返回递归中的数字集,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4097523/

相关文章:

java - 比较一组数组或值列表的最快方法

java - 如何在 Java 流处理中存储中间状态

Java - 谁能为我解释这个排列代码?

python - 仅使用线函数绘制分形树

返回未定义的 Javascript 递归函数

Java 有 FindBugs。 Ruby 的等价物是什么?

java - VLCJ RTP 流客户端

javascript - [].sort 忽略未定义的值?

java - 如何使用方法返回用户输入值的 double 组?

c - 二维动态数组未初始化 - 函数 C 的参数