0

我有一个反转字符串的递归方法(硬件分配,必须是递归的)。我做到了....但它只在第一次通过后返回字符串的值。通过分析每次通过后的输出,我可以看到它确实正确地完成了它的工作。这是我的代码,以及我在它下面得到的输出:

    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
4

2 回答 2

3

我认为你需要改变这一点:

this.reverseThisString(s);

对此:

return this.reverseThisString(s);

否则方法调用的结果将被简单地丢弃。

我还建议您将 k 更改为方法的参数而不是成员。

于 2011-02-05T23:05:45.573 回答
0

就像马克说的,你忘记了退货声明。

此外,还有一种更简单的方法来反转字符串(这也是我目前的作业:P)

public String reverse(String s) {
    if(s.length() <= 1)
        return s;
    return reverse(s.substring(1))+s.charAt(0);
}

于 2011-02-05T23:23:08.447 回答