以下代码搜索多项式函数的一个零点。它使用递归技术:
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/