将崩溃。
我正在使用递归线性搜索algortihm。即使条件是正确的,它也总是返回零。如果我不放置空,则会出现错误。我无法弄清楚我该如何做好。感谢您的帮助
private String findMinimumPricedHelper(String name, IMedia[] treeArray, int index) {
if (some conditions)
return treeArray[index].toString();
else
findMinimumPricedHelper(name, treeArray, index+1);
return null;
}
我期待一个值treeArray[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);
}
}
正如@eran所说,您缺少递归电话的返回,但是您也应该考虑条件永远不正确并且到达数组末尾的情况。如果条件从未满足。
- 您忘记了递归电话的回答答案。
- 我建议您在索引大于数组大小时检查角案。
- 如果要确保此方法永远不会崩溃,则应处理
index
小于零,treeArray
为null。
因此理想代码应该是:
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);
}