如何从java中的递归生成的结果列表中返回特定结果

时间:2017-05-15 14:13:23

标签: java recursion

我正在使用一种功能,我更喜欢使用递归来解决这个问题,我从递归中获取输出,但我的问题是我想从递归的输出列表中获取特定的输出。我不能这样做请帮助我,我正在做我迄今为止所做的事情

 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

我只想要最大的一个。不是其他人。但我无法得到它。请帮助。

2 个答案:

答案 0 :(得分:1)

您应该避免将String设为静态,然后您可以通过这种方式从方法中获得所需的结果(请参阅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;
    }

}

答案 1 :(得分: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;
    }

}