我有一个反转字符串的递归方法(HW赋值,必须是递归的)。我做到了....但它只在第一次传递后返回字符串的值。通过分析每次传递后的输出,我可以看到它确实正确地完成了它的工作。继承我的代码,输出我得到它:
String s = "Hello, I love you wont you tell me your name?";
int k=0;
public String reverseThisString(String s) {
if(k!=s.length()) {
String first =s.substring(0,k)+s.charAt(s.length()-1);
String end = ""+s.substring(k, s.length()-1);
k++;
s=first+end;
System.out.println(s);
this.reverseThisString(s);
}
return s;
}
输出:
?Hello, I love you wont you tell me your name
答案 0 :(得分:3)
我认为你需要改变这个:
this.reverseThisString(s);
到此:
return this.reverseThisString(s);
否则简单地丢弃方法调用的结果。
我还建议您将k更改为方法的参数而不是成员。
答案 1 :(得分:0)
此外,还有一种更简单的方法来反转字符串(这也是我目前的作业:P)
public String reverse(String s) {
if(s.length() <= 1)
return s;
return reverse(s.substring(1))+s.charAt(0);
}