我编写了一个方法,它将一个布尔数组作为输入,并使用循环返回数组中所有值的连接。但是,我试图做同样的事情,除了使用递归(没有允许循环)和我遇到麻烦。有什么建议或提示吗?谢谢!
以下是我为迭代部分编写的内容:
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;
}
答案 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));
}