2017-05-15 2 views
2

私はそれを解決するために再帰を使用することが望ましい機能を使用しています。再帰からの出力を取得していますが、私は私がこれまで行ってきたものを与えている私を助けてくださいことを行うことはできませんrecursion.Iの出力のそのリストから特定の出力をしたいJavaでの再帰によって生成された結果のリストから特定の結果を返す方法

public class Test { 

public static void main(String[] args) { 

    String s = "0"; 
    int count =3; 
    aMethod(s,count); 

} 

private static void aMethod(String s,int count) { 

    String t =""; 
    String finalBinaryString =""; 
    int iteration =0; 
    for(int i=0;i<s.length();i++){ 

     char f = s.charAt(i); 
     int tt = 1- Integer.parseInt(String.valueOf(f)); 
     t += String.valueOf(tt); 
    } 
    finalBinaryString = s+t; 
    if(iteration<count) 
    aMethod(finalBinaryString,--count); 
    System.out.println(finalBinaryString); 
} 

    } 

私は取得しています出力は

0110100110010110 
    01101001 
    0110 
    01 

です私はちょうど最大のものが欲しいです。他のものはありません。しかし、私はそれを得ることができません。助けてください。

答えて

1

再帰の結果としてfinalBinaryStringを返すことができます。

例があります:

public class Test { 
    static String finalBinaryString =""; 
    public static void main(String[] args) { 

     String s = "0"; 
     int count =3; 

     System.out.println(aMethod(s,count)); 

    } 

    private static String aMethod(String s,int count) { 

     String t =""; 

     int iteration =0; 
     for(int i=0;i<s.length();i++){ 

      char f = s.charAt(i); 
      int tt = 1- Integer.parseInt(String.valueOf(f)); 
      t += String.valueOf(tt); 
     } 
     finalBinaryString = s+t; 
     if(iteration<count) 
      aMethod(finalBinaryString,--count); 
     return finalBinaryString; 
    } 

} 
+0

は動作していますか?私に文字列出力として最長の文字列を与えてください – Mandrek

+0

はい、それは動作しています。私はそれをテストしました –

+0

System.out.println(aMethod(s、count))でコンパイルエラーが発生しました。 – Mandrek

1

静的にすることは避けてください。この方法で必要な結果を得ることができます(if (iteration < count)の部分を参照)。

public class Test { 

    public static void main(final String[] args) { 

     String s = "0"; 
     int count = 3; 

     System.out.println(aMethod(s, count)); 

    } 

    private static String aMethod(final String s, int count) { 

     String t = ""; 

     int iteration = 0; 
     for (int i = 0; i < s.length(); i++) { 

      char f = s.charAt(i); 
      int tt = 1 - Integer.parseInt(String.valueOf(f)); 
      t += String.valueOf(tt); 
     } 
     String finalBinaryString = s + t; 

     if (iteration < count) { 
      finalBinaryString = aMethod(finalBinaryString, --count); 
     } 

     return finalBinaryString; 
    } 

} 
+0

私は、この再帰から値を返すことができます? – Mandrek

+0

@Mandrek:最後の更新を参照してください – Berger

関連する問題