java递归线性搜索在数组中返回值问题



我正在使用递归线性搜索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);
}

最新更新