为什么我的结果字符串没有在我的递归方法中更新?
Why is my result string not updating in my recursive method?
我有我的递归方法来删除连续的字符,几乎是我的教授想要的。但是,她不想在 removeDuplicates 方法中使用 print 语句,而且我不明白为什么我的结果字符串在 returns 之前没有更新。
这是我的代码:
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;
}
}
我看到每次启动时,它都会将结果重置为空字符串。但是,不初始化它会出错,因为 return 行无法识别字符串已更新。我怎样才能解决这个问题?
(其他一切都是应该的。没有静态变量,main 方法中的调用是正确的,等等。我只需要修复那一部分。)
您的removeDuplicates
需要处理递归调用的 return 值
位置:
beg++;
removeDuplicates(a.substring(beg, a.length()));
您需要存储 removeDuplicates
调用的结果
PS: 作业题就不写答案了,只是指点看的地方
我有我的递归方法来删除连续的字符,几乎是我的教授想要的。但是,她不想在 removeDuplicates 方法中使用 print 语句,而且我不明白为什么我的结果字符串在 returns 之前没有更新。 这是我的代码:
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;
}
}
我看到每次启动时,它都会将结果重置为空字符串。但是,不初始化它会出错,因为 return 行无法识别字符串已更新。我怎样才能解决这个问题? (其他一切都是应该的。没有静态变量,main 方法中的调用是正确的,等等。我只需要修复那一部分。)
您的removeDuplicates
需要处理递归调用的 return 值
位置:
beg++;
removeDuplicates(a.substring(beg, a.length()));
您需要存储 removeDuplicates
调用的结果
PS: 作业题就不写答案了,只是指点看的地方