0

我有以下代码:

public class Test{
  public static void main(String ... args){
    String str = "ABCDE";
    testRecur(str, 1);
  }

  private static void testRecur(String str, int subLength){
    if(subLength > str.length())
      return;

    System.out.println("");
    recuAlgo(str, subLength);
    testRecur(str, ++subLength);
    return;
  }

  private static void recuAlgo(String str, int subLength){
    if(subLength > str.length())
      return;

    System.out.print(str.substring(0, subLength) + " ");
    recuAlgo(str.substring(1, str.length()), subLength);
    return;
  }
}

所需的输出是:

A B C D E 
AB BC CD DE 
ABC BCD CDE 
ABCD BCDE 
ABCDE 

我的问题是我不知道如何在不使用字符串长度作为方法输入的情况下编写递归。我采用了两个 for 循环的递归,但我仍然无法从方法声明中得到长度。

如何subLength从递归中删除变量?或者一般来说,递归解决这个问题的更好方法是什么?

4

0 回答 0