public int search(String type) {
for (int i = 0; i < size; i++) {
if (array[size-1-i].contains(type)) return i;
}
return -1;
}
我在执行此前搜索功能的递归功能时遇到问题,有人可以帮助我吗?
答案 0 :(得分:0)
对于递归函数,一个简单的解决方案是将要搜索的值和索引作为参数传入函数。
然后你检查
如果传入的索引大于数组的长度,则返回-1(因为我们无法找到该元素。
如果您可以在传入的索引中找到值传入,如果是,则返回该索引,
如果不高于2,则尝试在下一个索引处搜索。
对于这个递归函数,从索引0开始,在调用函数时传递0。
示例代码 -
public int search(String type, int index) {
if (index >= array.length) {
return -1;
}
else if(array[index].contains(type)) {
return array.length - i + 1; # assuming size from your function is array.length
}
else {
return search(type, index + 1)
}
}
答案 1 :(得分:0)
您似乎想要编写此搜索功能的递归变体。 我没有对您的代码进行任何优化,因为您需要处理。我假设你的代码编译很少,这是我尝试过的代码:
static String[] array = new String[] {"John", "Sam", "David"};
static int size = array.length;
public static void main(String[] args) {
int index = searchRecursive(0,"Sam");
System.out.println("Index: " + index);
}
public static int searchRecursive(int indexToCheck, String type) {
int result = -1;
if(indexToCheck<size) {
if(array[size-1-indexToCheck].contains(type)) {
result = indexToCheck;
} else {
result = searchRecursive(indexToCheck+1,type);
}
}
return result;
}
public static int searchIterative(String type) {
for (int i = 0; i < size; i++) {
if (array[size-1-i].contains(type)) return i;
}
return -1;
}