2016-04-03 7 views
0

Ich habe eine Methode geschrieben, die ein boolesches Array als Eingabe verwendet und die Konjunktion aller Werte im Array mit einer Schleife zurückgibt. Ich versuche jedoch dasselbe zu tun, außer Rekursion zu benutzen (keine for loops erlaubt) und habe Probleme. Irgendwelche Vorschläge oder Hinweise? Vielen Dank! HierSchleife durch boolesches Array mit Rekursion

ist, was ich für die Iteration Teil geschrieben:

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

Lassen Sie mich Ihre Frage verstehen, Sie wollen 'und' alle Werte in einem booleschen Array rekursiv, oder? – Clockwork

Antwort

1

Ein Beispiel einer rekursiven Funktion, die effektive & & alle Boolesche Werte in einem Array

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

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

Testfahrer:

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)); 
} 
  • wahre
  • falsch
+0

Hallo Kevin, wenn ich diesen Code versuche, bekomme ich einen Symbolfehler nicht finden. (variable Arrays). Irgendwelche Ideen, warum? Vielen Dank! – montomono

+0

@montomono, müssen Sie "java.util.Arrays" importieren. – KevinO

+0

ah richtig. Danke für die Erinnerung! – montomono

0

Sie könnten in der Linie der dies für etwas suchen:

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); 
} 
} 

Tweak es so, wie Sie möchten. Hoffe es hat geholfen !! :)

+0

Danke für die Antwort, aber die einzige Eingabe, die ich erlaubt bin, ist ein Array von booleschen Werten, aber ich darf Helfermethoden haben. Irgendwelche Ideen? Vielen Dank! – montomono

0

Hier ist ein Ansatz.

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); 

    } 

Clientcode.

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