为什么我的结果字符串在我的递归方法中没有更新?

时间:2015-09-01 02:30:42

标签: java recursion duplicates return-value updates

我有一个递归方法来删除连续的字符,几乎是我教授想要的。但是,她不想在removeDuplicates方法中使用print语句,而且我无法弄清楚为什么我的结果字符串在返回之前没有更新。 这是我的代码:

public static void main(String[] args){

    System.out.println(removeDuplicates("a"));
    System.out.println(removeDuplicates("aa"));
    System.out.println(removeDuplicates("aab"));
    System.out.println(removeDuplicates("aabb"));
    System.out.println(removeDuplicates("aaaba"));
    System.out.println(removeDuplicates("aabbccdefghijkllaa"));
    }

public static String removeDuplicates(String a){

    int beg=0;
    String result="";

    if (a.length()-1 ==0){
        result=""+a.charAt(0);
         //System.out.print(a.charAt(0));
      }
    else if (a.charAt(beg) == a.charAt(beg+1)) {
          beg++;
          removeDuplicates(a.substring(beg, a.length()));
         }
    else {
       result=""+a.charAt(0);
       //System.out.print(result);
       beg++;
       removeDuplicates(a.substring(beg, a.length()));
      } 
   return result;
    }
    }

我看到每次启动时都会将结果重置为空字符串。但是,不初始化它会产生错误,因为返回行不会识别字符串已更新。我怎样才能解决这个问题? (其他一切都是它应该是这样的。没有静态变量,主方法中的调用是正确的,等等。我只需要修复一个部分。)

1 个答案:

答案 0 :(得分:0)

您的removeDuplicates需要处理递归调用的返回值

位置:

beg++;
removeDuplicates(a.substring(beg, a.length()));

您需要存储removeDuplicates来电

的结果 PS:我不会写答案,因为这是家庭作业问题,我只是指着哪里看看