如何在递归算法中删除长度变量?

时间:2013-08-27 19:17:19

标签: java recursion

我有以下代码:

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变量?或者一般来说什么是递归解决这个问题的更好方法?

0 个答案:

没有答案