【发布时间】:2014-12-16 02:51:36
【问题描述】:
我正在尝试在排序数组中搜索我选择的数字。如果数组包含这个数字,我想返回每次出现的索引。我需要写方法来完成这项任务。一种是递归的,一种是迭代的。我已经开始下面的递归方法了。
public int findRecursive(T anEntry) {
return binarySearchRecursive(0, length - 1, anEntry);
}
private int binarySearchRecursive(int first, int last, T desiredItem)
{
int position = 0;
int mid = (first + last) / 2;
if (first > last || (desiredItem.compareTo(list[position]) != 0))
position = -(position + 1);
else if (desiredItem.equals(list[mid]))
position = mid;
else if (desiredItem.compareTo(list[mid]) < 0)
position = binarySearchRecursive(first, mid -1, desiredItem);
else
position = binarySearchRecursive(mid + 1, last, desiredItem);
return position;
}
这是预期的数组/输出
public static void main(String[] args) {
AList<Integer> testList = new AList<Integer>();
testList.add(1);
testList.add(3);
testList.add(2);
testList.add(5);
testList.add(7);
testList.add(2);
testList.add(4);
//* question 5
//* should output 1, -8, 4
// my out is returning -1, -1, -1
testList.sort();
System.out.println(testList.findRecursive(2));
System.out.println(testList.findRecursive(8));
System.out.println(testList.findRecursive(4));
System.out.println("");
【问题讨论】:
-
你的问题是什么?
-
你的意思是
int mid = (first + last) / 2;? -
不确定我是否理解,请您重新表述问题
-
我重新表述了这个问题。现在更有意义了吗?
-
不,
findRecursive方法在哪里?
标签: java recursion methods iteration