递归搜索函数Java

时间:2015-06-23 04:30:03

标签: java recursion

public int search(String type) {
  for (int i = 0; i < size; i++) {
    if (array[size-1-i].contains(type)) return i;
  }
  return -1;
}

我在执行此前搜索功能的递归功能时遇到问题,有人可以帮助我吗?

2 个答案:

答案 0 :(得分:0)

对于递归函数,一个简单的解决方案是将要搜索的值和索引作为参数传入函数。

然后你检查

  1. 如果传入的索引大于数组的长度,则返回-1(因为我们无法找到该元素。

  2. 如果您可以在传入的索引中找到值传入,如果是,则返回该索引,

  3. 如果不高于2,则尝试在下一个索引处搜索。

  4. 对于这个递归函数,从索引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;
    }