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

时间:2019-05-19 10:39:12

标签: java recursion

我正在使用递归线性搜索算法。即使if条件为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;
}

我期望值​​treeArray[index].toString(),但它返回null

3 个答案:

答案 0 :(得分:3)

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

UILabel

答案 1 :(得分:1)

就像@Eran所说的那样,您错过了递归调用的返回,但是您还应该考虑条件永远不为真并且到达数组末尾的情况。如果从不满足条件,则会崩溃。

答案 2 :(得分:1)

  • 您忘记了递归调用的返回答案。
  • 我建议当索引大于数组大小时检查角点情况。
  • 如果要确保此方法永远不会崩溃,则应处理index小于零,treeArray为空。

所以理想的代码应该是:

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);
}