2016-04-03 32 views
0

ブール値配列を入力として受け取り、ループを使用して配列内のすべての値の連結を返します。しかし、私は再帰を使用する以外は同じことをしようとしています(ループは許されません)。どんな提案やヒント?ありがとう!ここで 再帰を使用したブール値配列によるループ

は、私は繰り返し部分のために書かれたものです:あなたは、この行で何かを探しているかもしれない

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

私はあなたの質問を理解して欲しいと思いますが、論理値のすべての値を再帰的に 'と'したいのですか? – Clockwork

答えて

1

アレイ

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

こんにちはKevin、このコードを試してみると、Can not find symbolエラーが表示されています。 (可変配列)。理由は何ですか?ありがとう! – montomono

+0

@montomono、 'java.util.Arrays'をインポートする必要があります。 – KevinO

+0

ああ。念押し有難う! – montomono

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

はあなたが好きなようにそれを微調整します。 お手伝いしますように! :)

+0

回答ありがとうございます。私が許されている唯一の入力は、ブール値の配列ですが、ヘルパーメソッドを持つことが許されています。何か案は?ありがとう! – montomono

0

ここには1つのアプローチがあります。

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)); 
    } 
関連する問題