Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-core/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
数组返回值问题中的Java递归线性搜索_Java_Recursion - Fatal编程技术网

数组返回值问题中的Java递归线性搜索

数组返回值问题中的Java递归线性搜索,java,recursion,Java,Recursion,我正在使用递归线性搜索算法。即使条件为true,它也始终返回null。如果我不输入null,它将给出一个错误。我不知道我该怎么做才合适。谢谢你的帮助 private String findMinimumPricedHelper(String name, IMedia[] treeArray, int index) { if (some conditions) return treeArray[index].toString(); else findMin

我正在使用递归线性搜索算法。即使条件为true,它也始终返回null。如果我不输入null,它将给出一个错误。我不知道我该怎么做才合适。谢谢你的帮助

private String findMinimumPricedHelper(String name, IMedia[] treeArray, int index) {
   if (some conditions) 
       return treeArray[index].toString();
   else
       findMinimumPricedHelper(name, treeArray, index+1);
   return null;
}

我希望得到一个值
trearray[index].toString()
,但它返回null

您忽略了递归调用的值。尝试:

private String findMinimumPricedHelper(String name, IMedia[] treeArray, int index) {
    if (some conditions) {
        return treeArray[index].toString();
    } else {
        return findMinimumPricedHelper(name, treeArray, index+1);
    }
}

AS @ Eran说,你错过了递归调用的返回,但是你也应该考虑条件不为真的情况,并且到达数组的末尾。如果该条件从未满足,则会崩溃。

  • 您忘记了从递归调用返回答案
  • 我建议您在索引大于数组大小时检查角大小写
  • 如果要确保此方法不会崩溃,应将
    index
    处理为小于零,
    trearray
    为空
因此,理想的代码应该是:

private String findMinimumPricedHelper(String name, IMedia[] treeArray, int index) throws IllegalArgumentException {
   if (treeArray == null || index < 0) throw new IllegalArgumentException("parameters are not correct");
   if (index >= treeArray.length) return null;
   if(some conditions) return treeArray[index].toString();
   return findMinimumPricedHelper(name, treeArray, index+1);
}
私有字符串findMinimumPricedHelper(字符串名称、IMedia[]trearray、int索引)抛出IllegalArgumentException{
如果(trearray==null | | index<0)抛出新的IllegalArgumentException(“参数不正确”);
if(index>=trearray.length)返回null;
if(某些条件)返回trearray[index].toString();
返回findMinimumPricedHelper(名称、树名、索引+1);
}