数组返回值问题中的Java递归线性搜索
我正在使用递归线性搜索算法。即使条件为true,它也始终返回null。如果我不输入null,它将给出一个错误。我不知道我该怎么做才合适。谢谢你的帮助数组返回值问题中的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
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);
}