使用递归

时间:2016-04-03 22:38:02

标签: java recursion

我编写了一个方法,它将一个布尔数组作为输入,并使用循环返回数组中所有值的连接。但是,我试图做同样的事情,除了使用递归(没有允许循环)和我遇到麻烦。有什么建议或提示吗?谢谢!

以下是我为迭代部分编写的内容:

public class LogicalOperators {
  public static void main(String[] args) {
    boolean[] queue = new boolean[] {true, false, true, true, true};
    System.out.println(conjunctionIter(queue));
  }

public static boolean conjunctionIter(boolean[] queue){
  boolean allArrayTrue = true;
  for(int i=0; i<queue.length; i++){
    if(queue[i] == false){
      allArrayTrue = false;
      break;
    }
  }
  return allArrayTrue;
}

3 个答案:

答案 0 :(得分:1)

有效&amp;&amp; amp;的递归函数的一个例子。数组中的所有布尔值

public static boolean recurse(boolean[] ary)
{
    if (ary.length == 1) {
        return ary[0];
    }

    return ary[0] && recurse(Arrays.copyOfRange(ary, 1, ary.length));
}

测试驱动程序:

public static void main(String[] args)
{
    boolean[] ary = { true, true, true, true, true};

    System.out.println(recurse(ary));

    boolean[] ary2 = { true, true, false, true, true};

    System.out.println(recurse(ary2)); 
}

答案 1 :(得分:0)

您可能正在寻找以下内容:

public class LogicalOperators {
public static void main(String[] args) {
boolean[] queue = new boolean[] {true, false, true, true, true};
System.out.println(conjunctionIter(queue,0));
}

public static boolean conjunctionIter(boolean[] queue,int i){
if(i==queue.length)
    return true;
if(queue[i] == false)
  return false;
  else
return conjunctionIter(queue, i+1);
}
}

按照你喜欢的方式调整它。 希望它有所帮助!! :)

答案 2 :(得分:0)

这是一种方法。

public static boolean conjunctionIter(boolean[] queue){
        boolean result = true;
        int index = 0;
        return conjunctionIter(queue, result, index);
    }

    private static boolean conjunctionIter(boolean[] queue, boolean result, int index){

        if(index == queue.length -1)
            return result = result && queue[index];

        return result = conjunctionIter(queue, result, ++index);

    }

客户端代码。

public static void main(String[] args) {
    // write your code here
        boolean[] queue = new boolean[] {true, false, true, true, true};
        System.out.println(conjunctionIter(queue));
    }